如何在ListBoxItem中为Trigger查找子控件的IsEnabled属性

时间:2012-03-21 09:14:23

标签: c# wpf xaml triggers isenabled

我试图根据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>

1 个答案:

答案 0 :(得分:0)

为什么不在IsEnabled上设置ListBoxItem呢?它也应该禁用Button

但是,您可以使用Button.IsEnabled绑定将ListBoxItem.IsEnabled绑定到RelativeSource,并设置IsEnabled的{​​{1}}属性,而不是ListBoxItem也是

Button

如果您正在使用WPF,我强烈建议您查看MVVM设计模式。它非常适合WPF,使用它可以将<Button IsEnabled="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}" /> ListBoxItem.IsEnabled绑定到Button.IsEnabled

中的同一属性