gpt4 book ai didi

WPF TabControl 和 DataTemplates

转载 作者:行者123 更新时间:2023-12-04 04:45:19 24 4
gpt4 key购买 nike

我有一组 ViewModel 绑定(bind)到 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 中吗?

最佳答案

最简单的方法是使用自动模板系统,将 DataTemplates 包含在 ContentControl 的资源中。模板的范围仅限于它们所在的元素!

<TabControl ItemsSource="{Binding TabViewModels}">
<TabControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type AViewModel}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type BViewModel}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type CViewModel}">
...
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.Resources>
<DataTemplate DataType="{x:Type AViewModel}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type BViewModel}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type CViewModel}">
...
</DataTemplate>
</TabControl.Resources>
</TabControl>

关于WPF TabControl 和 DataTemplates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1348118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com