2011-09-24 21 views
2

我的WPF列表框包含两种类型的对象:产品和品牌。如何为某个DataType的ListBoxItems应用样式设置器?

我想我的产品可选。我想我的品牌不可选

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

默认情况下,什么可以选择:

<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> 

我不能把二传手在DataTemplate中。

我不能把一个DataType放到样式上。

如何设计只有品牌类型的ListBoxItems?

回答

1

你可以在你的ListBoxItem风格上使用数据触发器吗?如果是这样,绑定到DataContext(你的类)并使用值转换器来测试类型。如果它是您感兴趣的那个,请对ListBoxItem进行样式设置,使其不能显示为选中状态。

我不认为你可以不允许在选择器(ListBox的父项)中选择一个项目而没有代码隐藏或自定义行为。

相关问题