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

时间:2012-02-01 16:23:41

标签: wpf silverlight templates

作为标题,是否可能?

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

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

在我的情况下,很简单,如果数据对象的Property = 1,则显示template1,2然后是template2。

没有DataTemplateSelector可以做到吗?

1 个答案:

答案 0 :(得分:2)

是的,您可以使用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>

我实际上更喜欢DataTriggersDataTemplateSelector因为它们会响应PropertyChange通知,而我更愿意在我的UI代码中看到我的UI逻辑。