我有一组 ViewModel 绑定到 TabControl 的 ItemsSource 属性。我们将这些 ViewModel 称为 AViewModel、BViewModel 和 CViewModel。其中每一个都需要有不同的 ItemTemplate(用于标题;因为它们每个都需要显示不同的图标)和不同的 ContentTemplate(因为它们具有非常不同的交互模型)。
我想要的是这样的:
在某处的 Resource.xaml 文件中定义:
<DataTemplate x:Key="ItemTemplate" DataType="{x:Type AViewModel}">
...
</DataTemplate>
<DataTemplate x:Key="ItemTemplate" DataType="{x:Type BViewModel}">
...
</DataTemplate>
<DataTemplate x:Key="ItemTemplate" DataType="{x:Type CViewModel}">
...
</DataTemplate>
<DataTemplate x:Key="ContentTemplate" DataType="{x:Type AViewModel}">
...
</DataTemplate>
<DataTemplate x:Key="ContentTemplate" DataType="{x:Type BViewModel}">
...
</DataTemplate>
<DataTemplate x:Key="ContentTemplate" DataType="{x:Type CViewModel}">
...
</DataTemplate>
单独定义:
<TabControl ItemTemplate="[ Some way to select "ItemTemplate" based on the type ]"
ContentTemplate="[ Some way to select "ContentTemplate" based on the type ]"/>
现在,我知道实际上,每次我使用相同的键定义 DataTemplate 时,系统都会抱怨。但是,有什么我可以做的与此类似的事情,可以让我根据名称和 DataType 将 DataTemplate 放入 TabControl 中吗?