Другой шаблон на другое значение ListBoxItem без DataTemplateSelector? - PullRequest
1 голос
/ 01 февраля 2012

Возможно ли это в качестве заголовка?

Я видел в TreeView, что вы можете определять разные HierarchicalDataTemplate для разных типов данных, используя атрибут DataType, ему даже не нужен DataTemplateSelector.

Так что мне интересноМожно ли выбрать шаблон в соответствии с привязанным значением без использования DataTemplateSelector?

В моих условиях это очень просто, если свойство объекта данных = 1, затем отобразить template1, 2, а затем template2.

Возможно ли это сделать без DataTemplateSelector?

1 Ответ

2 голосов
/ 01 февраля 2012

Да, вы можете использовать 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 уведомления, и я предпочитаю видеть мою логику пользовательского интерфейса в своем коде пользовательского интерфейса.

...