我有一个WPF
的项目。如何在其上使用Data Template
和子Data Template
。
我的项目中有以下课程。
public abstract Class X
public Class A: X
public Class B: X
public Class C: X
并在XAML文件中使用以下代码:
<DataTemplate DataType="{x:Type A}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type B}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type C}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate">
...
<!-- use datatemplate of A,B or C --!>
...
</DataTemplate>
<ItemsControl ItemTemplate="{StaticResource xdatatemplate}"/>
我想在我的ItemsControl的Itemtemplate中使用xdatatemplate。 ItemsSource项目的类型为A,B或C.并且我的数据模板的一部分在类型A,类型B和类型C之间是不同的。如何在X DataTemplate上使用A,B和C子DataTemplate?
我可以将ItemTemplateSelector
用于此目的吗?
提前致谢。
答案 0 :(得分:1)
如果xdatatemplate仅通过其DataType选择子DataTemplate,那么您可以这样做:
<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate">
<Grid>
<ContentControl Content="{Binding}" />
<!-- Other content -->
<Grid>
</DataTemplate>
但是,如果您需要更复杂的子DataTemplate选择逻辑,则应使用ContentTemplateSelector:
<local:MyTemplateSelector x:Key="MyTemplateSelector" />
<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate">
<Grid>
<ContentControl Content="{Binding}" ContentTemplateSelector="{StaticResource MyTemplateSelector}" />
<!-- Other content -->
<Grid>
</DataTemplate>