根据变量设置样式



我有一个控件,它想要根据其数据上下文中的变量调整其样式。就像我有一个列表框,其中包含客户或供应商的联系人列表。

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

我该怎么做?

这正是DataTemplateSelector的设计目的

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

如果将

Contact类子类化为CustomerVendor类型,则只需为每个类型定义不同的DataTemplate,WPF 将自动使用正确的类型。它们可以作为ListBox的资源包含在下面的示例中,也可以在树的更高位置包含。

<ListBox ItemsSource="...">
    <ListBox.Resources>
        <DataTemplate DataType="{x:Type Customer}">
           ...
        </DataTemplate>
        <DataTemplate DataType="{x:Type Vendor}">
           ...
        </DataTemplate>
    </ListBox.Resources>
</ListBox>

相关内容

  • 没有找到相关文章

最新更新