我正在开发一个 ComboBox,它的项目上必须有一个 CheckBox。我已经实现了一项功能来参与这些复选框的更改。该功能的一部分从复选框建立组合框的内容(即,当我选择“梨”、“苹果”和“蓝莓”时,组合必须检查这些项目,并且其内容必须是“梨;苹果;”蓝莓')。
我已经做到了。但是,由于我使用的是 ComboBox,因此每当我单击其复选框之外的项目时都会选择项目,因此内容会被项目的文本覆盖。这个 xaml 显示了它是如何编写的:
<ComboBox IsEditable="True" DataContext="{Binding}"
IsTextSearchEnabled="False" IsReadOnly="True">
<ComboBox.ItemTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=EstaSeleccionado,
Mode = TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding Path=Item.Value}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
如何在不禁用复选框的情况下禁用列表项?
更新 在您的回答中尝试跳过事件。我知道这可以或多或少地干净和容易地完成;但出于可维护性的考虑,我更喜欢基于 property-xaml 的解决方案(即禁用 ListBoxItem 上的事件,除了复选框的屏幕区域等)