如何根据属性值禁用数据绑定的ListBox项目?

33

有没有人知道如何根据属性值禁用数据绑定的ListBox中的项?

最好使用DataTrigger,当某个属性为false时,禁用该项(使其无法选择),而不影响ListBox中的其他项。

<ListBox>
  <ListBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Name="textBlock" Text="{Binding Description}"/>
      <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding IsEnabled}" Value="False">
          ??
        </DataTrigger>
      </DataTemplate.Triggers>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
1个回答

70
您可以使用ItemContainerStyle:
<ListBox>
  <ListBox.ItemContainerStyle>
    <Style TargetType="{x:Type ListBoxItem}">
      <Style.Triggers>
        <DataTrigger Binding="{Binding YourPropertyName}" Value="False">
          <Setter Property="IsEnabled" Value="False"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </ListBox.ItemContainerStyle>
</ListBox>

非常好!它也适用于 SurfaceListBox 控件。 - GibboK
正常工作。您知道我如何禁用选择,但仍然使项模板内的按钮启用吗? - Nicholas Miller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接