ListViewの継承者が2つあります。
public class FileListView : ListView
public class ThumbnailListView : ListView
XAMLには、次のコードがあります。
<Window.Resources>
<DataTemplate x:Key="FileListViewTemplate">
<dtc:FileListView/>
</DataTemplate>
<DataTemplate x:Key="ThumbnailViewTemplate">
<dtc:ThumbnailView/>
</DataTemplate>
</Window.Resources>
<Grid>
<CheckBox x:Name="MyCheckBox">
<ContentControl x:Name="MyContentControl" MouseDown="OnContentControlMouseDown">
<DataTemplate>
<ContentPresenter x:Name="AudioPresenter"
ContentTemplate="{StaticResource FileListTemplate}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=MyCheckBox, Path=IsChecked}"
Value="true">
<Setter TargetName="AudioPresenter"
Property="ContentTemplate"
Value="{StaticResource ThumbnailViewTemplate}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ContentControl>
</Grid>
コードビハインド:
public ListView GetCurrentListView()
{
ListView lv = null;
DataTemplate fileListViewTemplate = base.FindResource("FileListViewTemplate")
as DataTemplate;
DataTemplate thumbnailViewTemplate = base.FindResource("ThumbnailViewTemplate")
as DataTemplate;
ContentPresenter contentPresenter = VisualTreeHelper.GetChild(this.MyContentControl, 0)
as ContentPresenter;
try
{
lv = fileListViewTemplate.FindName("FileListView", contentPresenter)
as ListView;
}
catch (Exception)
{
lv = thumbnailViewTemplate.FindName("ThumbnailView", contentPresenter)
as ListView;
}
return lv;
}
CheckBoxが表示されている場合は、ThumbnailViewが表示されます。それ以外の場合は、FileListViewが表示されます。また、コードビハインドから現在のリストビューを取得したい場合もあります。私は何が間違っているのですか?