【发布时间】:2017-08-23 11:39:36
【问题描述】:
尝试设置 WPF ComboBox;
它的一些项目不应该是可选择的,所以我将IsEnabled 绑定到底层项目的某些属性。
同时,我需要定义一个ItemTemplate,其中包含例如一个按钮。
这个按钮需要是可点击的,即使该项目是不可选择的(点击按钮当然不应该选择该项目;它会触发一个执行一些后台操作的命令,这最终将使底层项目可选择)
但是,当ComboBoxItem.IsEnabled = false 时,似乎连按钮都自动被禁用了。
简单示例:
<ComboBox ItemsSource="{Binding Items}">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="IsEnabled" Value="{Binding CanSelectItem}"/>
</Style>
</ComboBox.ItemContainerStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
<!-- This button isn't clickable when ComboBoxItem.IsEnabled = false .. but it should be! -->
<Button Content="Click me" Command="{Binding SomeCmd}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
有什么办法可以规避吗?例如,将某些项目设置为不可选择,但在 ItemTemplate 中定义一个按钮,无论如何都可以点击?
谢谢
【问题讨论】:
-
将 ComboBoxItem 设置为禁用将禁用其所有内容。也许不是禁用,而是在合适的时候取消
SelectionChanged事件?