我有一個控件想要根據其datacontext中的變量調整其樣式。正如我有一個列表框控股的客戶或供應商的聯繫人列表。基於變量設置樣式?
每個聯繫人都有一個名稱並設置爲客戶或供應商。每個客戶都有近期購買和電子郵件,而每個供應商都有公司名稱,傳真和銷售信息。所以基本上我想有兩個基於contact_type變量的獨立樣式。
我該怎麼做?
我有一個控件想要根據其datacontext中的變量調整其樣式。正如我有一個列表框控股的客戶或供應商的聯繫人列表。基於變量設置樣式?
每個聯繫人都有一個名稱並設置爲客戶或供應商。每個客戶都有近期購買和電子郵件,而每個供應商都有公司名稱,傳真和銷售信息。所以基本上我想有兩個基於contact_type變量的獨立樣式。
我該怎麼做?
這正是一個DataTemplateSelector是專門做
而真正的模板應該基於類 - 不是一個變量
如果客戶和供應商有一些共同的特性然後讓他們各自實現共同接口
如果你的繼承類Contact
到Customer
和Vendor
類型,那麼你可以簡單地定義爲每種類型的不同DataTemplate
和WPF會自動使用正確的。它們可以作爲ListBox
的資源包含在下面的示例中,或者在樹中更高。
<ListBox ItemsSource="...">
<ListBox.Resources>
<DataTemplate DataType="{x:Type Customer}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type Vendor}">
...
</DataTemplate>
</ListBox.Resources>
</ListBox>
看看'ListBox'上的'ItemTemplateSelector'。 – 2014-11-20 20:15:35