我试图根据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>
最佳答案
为什么不只是在您的IsEnabled
上设置ListBoxItem
?它也应该禁用Button
。
但这就是说,您可以使用Button.IsEnabled
绑定将ListBoxItem.IsEnabled
绑定到RelativeSource
,并设置IsEnabled
的ListBoxItem
属性,而不是Button
<Button IsEnabled="{Binding IsEnabled,
RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}" />
如果您使用WPF,强烈建议您研究MVVM设计模式。它非常适合WPF,使用它可以将
ListBoxItem.IsEnabled
和Button.IsEnabled
绑定到DataContext
中的相同属性。关于c# - 如何在ListBoxItem中为触发器找到子控件的IsEnabled属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9801559/