WPF列表中每个项目使用不同的项目模板?

13

我在一个列表控件中有很多项。我希望每个项根据其类型具有不同的项模板。因此,列表中的第一项是ObjectA类型,所以我希望使用ItemTemplateA进行渲染。第二项是ObjectB类型,因此我希望使用ItemTemplateB进行渲染。目前,我只能使用ItemTemplate设置为它们定义一个模板。是否有任何方法可以实现这一点?

2个回答

15

ItemTemplateSelector 可以工作,但我认为在资源部分创建多个 DataTemplate 并为每个模板指定一个 DataType 更容易。这样,如果项生成器检测到匹配的数据类型,它将自动使用此 DataTemplate

<DataTemplate DataType={x:Type local:ObjectA}>
   ...
</DataTemplate>

同时确保你的DataTemplate未设置任何x:Key
点击此处了解更多关于这种方法的信息。


4
我忘记加上 {x:Type...} 的部分,请再试一次! - rudigrobler
1
还要确保您没有设置x:Key! - rudigrobler
2
看起来链接已经失效了。你有类似的参考来源吗? - default
缺少对 {x:Type local:Object} 的引号。这里有一个类似的解决方案链接(https://www.codeproject.com/Articles/31837/Creating-an-Internationalized-Wizard-in-WPF),使用 WPF 中的 ItemsControl 和 DataType 绑定。 - user8276908

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接