我在一个列表控件中有很多项。我希望每个项根据其类型具有不同的项模板。因此,列表中的第一项是ObjectA类型,所以我希望使用ItemTemplateA进行渲染。第二项是ObjectB类型,因此我希望使用ItemTemplateB进行渲染。目前,我只能使用ItemTemplate设置为它们定义一个模板。是否有任何方法可以实现这一点?
我在一个列表控件中有很多项。我希望每个项根据其类型具有不同的项模板。因此,列表中的第一项是ObjectA类型,所以我希望使用ItemTemplateA进行渲染。第二项是ObjectB类型,因此我希望使用ItemTemplateB进行渲染。目前,我只能使用ItemTemplate设置为它们定义一个模板。是否有任何方法可以实现这一点?
ItemTemplateSelector
可以工作,但我认为在资源部分创建多个 DataTemplate
并为每个模板指定一个 DataType
更容易。这样,如果项生成器检测到匹配的数据类型,它将自动使用此 DataTemplate
。
<DataTemplate DataType={x:Type local:ObjectA}>
...
</DataTemplate>
同时确保你的DataTemplate
未设置任何x:Key
。
点击此处了解更多关于这种方法的信息。