King Chan
King Chan

Reputation: 4302

Different template on different ListBoxItem value without DataTemplateSelector?

As title, is it possible?

I have seen in TreeView you can defines different HierarchicalDataTemplate for different datatype using DataType attribute, it doens't even need DataTemplateSelector.

So I wonder if is possible to choose a template according to a binded value without using DataTemplateSelector?

In my condition, is very simple, if the data object's Property = 1, then display template1, 2 then template2.

Is it possible to do it without DataTemplateSelector?

Upvotes: 1

Views: 417

Answers (1)

Rachel
Rachel

Reputation: 132558

Yes, you can use a 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>

I actually prefer DataTriggers to a DataTemplateSelector because they respond to PropertyChange notifications, and I prefer to see my UI logic in my UI code.

Upvotes: 2

Related Questions