2012-02-01 62 views
1

作爲標題,可能嗎?不同的模板在不帶DataTemplateSelector的不同ListBoxItem值上?

我在TreeView中看到,您可以使用DataType屬性爲不同的數據類型定義不同的HierarchicalDataTemplate,它甚至不需要DataTemplateSelector。

所以我想知道是否有可能根據綁定值選擇模板而不使用DataTemplateSelector?

在我的情況下,很簡單,如果數據對象的Property = 1,則顯示template1,2然後是template2。

是否有可能沒有DataTemplateSelector?

回答

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邏輯。

+0

耶,謝謝,從創建DataTemplate節省了大量的時間。 – 2012-02-01 19:59:42