C# 如何找到子控件';触发器的ListBoxItem中的s IsEnabled属性
我试图根据ListBoxItem内容的IsEnabled属性禁用ListBoxItem。与此代码类似,按钮1的IsEnabled=False,但列表框项是可选的。如果内容IsEnabled属性为false,我想禁用选择。如何触发对项目内容及其IsEnabled属性的搜索C# 如何找到子控件';触发器的ListBoxItem中的s IsEnabled属性,c#,wpf,xaml,triggers,isenabled,C#,Wpf,Xaml,Triggers,Isenabled,我试图根据ListBoxItem内容的IsEnabled属性禁用ListBoxItem。与此代码类似,按钮1的IsEnabled=False,但列表框项是可选的。如果内容IsEnabled属性为false,我想禁用选择。如何触发对项目内容及其IsEnabled属性的搜索 <Grid> <ListBox> <ListBox.ItemTemplate> <DataTemplate>
<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.
2.
3.
为什么不直接在您的列表框项目上设置IsEnabled
?它还应禁用按钮
但也就是说,您可以使用相对资源
绑定将按钮.IsEnabled
绑定到ListBoxItem.IsEnabled
,并设置ListBoxItem
的IsEnabled
属性,而不是按钮
<Button IsEnabled="{Binding IsEnabled,
RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}" />
如果您正在使用WPF,我强烈建议您研究MVVM设计模式。它非常适合WPF,使用它可以将ListBoxItem.IsEnabled
和按钮绑定到DataContext
中的同一属性,为什么不在ListBoxItem
上设置IsEnabled
?它还应禁用按钮
但也就是说,您可以使用相对资源
绑定将按钮.IsEnabled
绑定到ListBoxItem.IsEnabled
,并设置ListBoxItem
的IsEnabled
属性,而不是按钮
<Button IsEnabled="{Binding IsEnabled,
RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}" />
如果您正在使用WPF,我强烈建议您研究MVVM设计模式。它非常适合WPF,使用它可以将ListBoxItem.IsEnabled
和按钮绑定到DataContext
中的相同属性,谢谢,但这不是我想要实现的。我想获取子控件的IsEnabled属性。我正在使用MVVM,但我希望使用资源字典中的触发器样式。谢谢,但这不是我想要实现的。我想获取子控件的IsEnabled属性。我正在使用MVVM,但我希望使用资源字典中的样式触发器。