根据变量设置样式?

时间:2014-11-20 20:12:15

标签: wpf styles

我有一个控件想要根据其datacontext中的变量调整其样式。因为我有一个ListBox,其中包含客户或供应商的联系人列表。

每个联系人都有一个名称,并设置为客户或供应商。每个客户最近都有购买和电子邮件,而每个供应商都有公司名称,传真和销售信息。所以基本上我希望有两个基于contact_type变量的独立样式。

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

这正是DataTemplateSelector设计的目的

实际上模板应该基于类 - 而不是变量
如果客户和供应商有一些共同的属性,那么让它们各自实现公共接口

答案 1 :(得分:0)

如果您将Contact类继承为CustomerVendor类型,则可以为每种类型定义不同的DataTemplate,并且WPF会自动使用正确的一。它们可以作为ListBox的资源包含在下面的示例中,也可以包含在树中更高的位置。

<ListBox ItemsSource="...">
    <ListBox.Resources>

        <DataTemplate DataType="{x:Type Customer}">
           ...
        </DataTemplate>

        <DataTemplate DataType="{x:Type Vendor}">
           ...
        </DataTemplate>

    </ListBox.Resources>
</ListBox>