我想用 CheckBoxes 构建一个 ComBobox。目前我已经这样做了。
我已将数据模板定义为
<DataTemplate x:Key="CheckComboBox">
<StackPanel Orientation="Horizontal" Name="CheckboxHolder" Width="120">
<CheckBox Name="CheckComboBox" HorizontalContentAlignment="Stretch" IsChecked="{Binding Selected, Mode=TwoWay}" Tag="{Binding DisplayString}" Content ="{Binding DisplayString}" Unchecked="CheckComboBox_Unchecked" Checked="CheckComboBox_Checked"/>
</StackPanel>
</DataTemplate>
我用这个作为
<ComboBox Name="Types" IsEditable="True" Width="120" IsReadOnly="True" IsHitTestVisible="True" ItemTemplate="{StaticResource CheckComboBox}" ItemsSource="{Binding typesOfRules}" SelectionChanged="cb_SelectionChanged" />
我的视图模型将 DisplayString 和 Selected 暴露为属性。基于复选框单击,我将 combobox.text 属性设置为逗号分隔的字符串。
当前的问题是,当我单击组合框下拉列表中文本(复选框的内容)之外的区域时,正在为我不想要的 combobox.text 属性设置一些视图模型对象。那么我该如何避免呢?我可以禁用该事件,或者更好的解决方案是复选框的内容属性应该覆盖整个组合框,以便用户单击的任何位置都选中该特定复选框。