Wpf 不带DataTemplateSelector的不同ListBoxItem值上的不同模板?

Wpf 不带DataTemplateSelector的不同ListBoxItem值上的不同模板?,wpf,silverlight,templates,Wpf,Silverlight,Templates,作为标题,有可能吗 我在TreeView中看到,您可以使用datatype属性为不同的数据类型定义不同的HierarchycalDataTemplate,它甚至不需要DataTemplateSelector 所以我想知道是否可以根据绑定的值选择一个模板而不使用DataTemplateSelector 在我的情况下,非常简单,如果数据对象的属性=1,则显示template1,2,然后显示template2 不使用DataTemplateSelector是否可以执行此操作?是的,您可以使用DataT

作为标题,有可能吗

我在TreeView中看到,您可以使用datatype属性为不同的数据类型定义不同的HierarchycalDataTemplate,它甚至不需要DataTemplateSelector

所以我想知道是否可以根据绑定的值选择一个模板而不使用DataTemplateSelector

在我的情况下,非常简单,如果数据对象的属性=1,则显示template1,2,然后显示template2


不使用DataTemplateSelector是否可以执行此操作?

是的,您可以使用
DataTrigger

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="Template" Value="{StaticResource DefaultTemplate}" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding SomeProperty}" Value="2">
            <Setter Property="Template" Value="{StaticResource Template2}" />
        </DataTrigger>
    </Style.Triggers>
</Style>


实际上,我更喜欢
DataTriggers
而不是
DataTemplateSelector
,因为它们响应
PropertyChange
通知,而且我更喜欢在我的UI代码中查看我的UI逻辑。

是的,谢谢,这节省了大量创建DataTemplate的时间。