Wpf 如何为特定数据类型的ListBoxItems应用样式设置器?
我的WPF列表框包含两种类型的对象:产品和品牌 我想选择我的产品。我希望我的品牌不可选择 这两种类型都有自己的数据模板 默认情况下,可以选择任何内容:Wpf 如何为特定数据类型的ListBoxItems应用样式设置器?,wpf,xaml,styles,datatemplate,listboxitem,Wpf,Xaml,Styles,Datatemplate,Listboxitem,我的WPF列表框包含两种类型的对象:产品和品牌 我想选择我的产品。我希望我的品牌不可选择 这两种类型都有自己的数据模板 默认情况下,可以选择任何内容: <ListBox ... > <ListBox.Resources> <DataTemplate DataType="{x:Type local:Product}"> ... </DataTemplate> <Da
<ListBox ... >
<ListBox.Resources>
<DataTemplate DataType="{x:Type local:Product}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type local:Brand}">
...
</DataTemplate>
</ListBox.Resources>
</ListBox>
<ListBox ... >
<ListBox.Resources>
...
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Focusable" Value="False" />
</Style>
</ListBox.Resources>
</ListBox>
...
...
我可以使用Setter设置焦点,但不能选择任何内容:
<ListBox ... >
<ListBox.Resources>
<DataTemplate DataType="{x:Type local:Product}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type local:Brand}">
...
</DataTemplate>
</ListBox.Resources>
</ListBox>
<ListBox ... >
<ListBox.Resources>
...
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Focusable" Value="False" />
</Style>
</ListBox.Resources>
</ListBox>
...
我不能将Setter放在DataTemplate中
我无法将数据类型添加到样式中
如何仅为品牌类型的ListBoxItems设置样式?由于使用了StyleSelector类,您可以根据ItemContainerStyle的数据类型附加样式。这里有一个很好的例子:可以在ListBoxItem样式上使用数据触发器吗?如果是这样,请绑定到DataContext(您的类)并使用值转换器测试该类型。如果它是您感兴趣的项目,请设置ListBoxItem的样式,使其无法显示为选中状态 我不认为在没有代码隐藏或自定义行为的情况下,您可以禁止在选择器(ListBox的父项)中选择项