CheckBoxes を使用してコンボボックスを構築したいと考えています。現在、私はこれを行っています。
私はデータテンプレートを次のように定義しました
<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 プロパティをコンマ区切りの文字列に設定しています。
現在の問題は、コンボボックスのドロップダウンリストでテキスト(チェックボックスの内容)の外側の領域をクリックすると、いくつかのビューモデルオブジェクトがコンボボックス.テキストプロパティに設定されていることです。では、どうすればこれを回避できますか? そのイベントを無効にしても問題ありません。より良い解決策は、チェックボックスの content プロパティがコンボボックスアイテム全体をカバーするようにして、ユーザーがクリックした場所で特定のチェックボックスが選択されるようにすることです。