wpf - 如何为特定数据类型的 ListBoxItems 应用样式 setter ?

标签 wpf xaml styles datatemplate listboxitem

我的 WPF 列表框包含两种类型的对象:产品和品牌。

我希望我的产品可供选择。我希望我的品牌不可选择

这两种类型都有自己的 DataTemplate。

默认情况下,可以选择任何内容:

<ListBox ... >
    <ListBox.Resources>
        <DataTemplate DataType="{x:Type local:Product}">
            ...
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:Brand}">
            ...
        </DataTemplate>
    </ListBox.Resources>
</ListBox>

我可以使用 Setter 设置 Focusable,但随后可能无法选择任何内容:

<ListBox ... >
    <ListBox.Resources>
        ...
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="Focusable" Value="False" />
        </Style>
    </ListBox.Resources>
</ListBox>

我无法将 Setter 放入 DataTemplate 中。

我无法将数据类型放入样式中。

如何仅设置品牌类型的 ListBoxItems 的样式?

最佳答案

借助 StyleSelector 类,您可以根据 ItemContainerStyle 的数据类型附加样式。这里有一个非常好的例子:http://www.telerik.com/help/wpf/common-data-binding-style-selectors.html

关于wpf - 如何为特定数据类型的 ListBoxItems 应用样式 setter ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7542139/

相关文章:

javascript - css style 替换内联一个样式名称

c# - WPF 在更新时更改绑定(bind)值

c# - 以编程方式更改选择器的 ListView 样式

c# - 按钮的依赖属性

c# - 有什么方法可以设置 ResourceDictionary 键以匹配类名?

android - 如何在 styles.xml 中设置所有 Activity 的背景

c# - wpf窗体出现后运行程序

c# - UWP XAML 弹出窗口不尊重垂直对齐?

c# - 如何从 VisualState 更改模板化控件的属性?

c# - 如何在asp中的按钮内添加图像