2

我正在尝试根据 ListBoxItem 内容的 IsEnabled 属性禁用 ListBox 项。就像在这段代码中一样,按钮 1 具有 IsEnabled=False 但列表框项目是可选的。如果内容 IsEnabled 属性为 false,我想禁用选择。应该如何触发对项目内容及其 IsEnabled 属性的搜索。

<Grid>
      <ListBox>
         <ListBox.ItemTemplate>
            <DataTemplate>
               <DataTemplate.Triggers>
                  <Trigger Property="IsEnabled"  Value="False">
                     <Setter Property="IsEnabled" Value="False"/>
                  </Trigger>
               </DataTemplate.Triggers>
            </DataTemplate>
         </ListBox.ItemTemplate>
         <ListBoxItem>
            <Button IsEnabled="False">1</Button>
         </ListBoxItem>
         <ListBoxItem>
            <Button>2</Button>
         </ListBoxItem>
         <ListBoxItem>
            <Button>3</Button>
         </ListBoxItem>         
      </ListBox>
</Grid>
4

1 回答 1

0

为什么不直接设置IsEnabled你的ListBoxItem呢?它也应该禁用Button

但就是说,您可以使用绑定将 绑定Button.IsEnabled到,并设置 的属性,而不是太ListBoxItem.IsEnabledRelativeSourceIsEnabledListBoxItemButton

<Button IsEnabled="{Binding IsEnabled, 
    RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}" />

如果您正在使用 WPF,我强烈建议您查看 MVVM 设计模式。它非常适合 WPF,使用它可以将 和ListBoxItem.IsEnabled绑定Button.IsEnabledDataContext

于 2012-03-21T12:38:28.600 回答