У меня есть 2 наследника ListView:
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. И иногда я хочу получить текущий вид списка из кода позади.
Что я делаю не так?