何かが選択されたときにクリアボタンを含む WPF ComboBox コントロールを作成しようとしています。コントロールには 2 つの状態が必要です。何かが選択されている場合、コントロールはクリア ボタン付きのラベルのように見えます。何も選択されていない場合は、通常の ComboBox が表示されます。2 つの状態が下の図に示されています。
私の問題を調査したところ、私と非常によく似た次のSOの質問に出くわしました。
WPF ComboBox をサブクラス化してボタンを追加する方法
どちらも、ComboBox をサブクラス化して、追加のボタンを備えた変更されたテンプレートを提供することを提案しています。しかし、これは私が少し混乱しているところです。リンクされた 2 番目の質問に対する John Bowen の回答は、ComboBox のデフォルト テンプレートをコピーする必要があることを示しています。Blend からテンプレートを取得するボタンを含めるように変更します。ブレンドに習熟していないので、MSDN でテンプレートを見つけました。
http://msdn.microsoft.com/en-us/library/ms752094(v=vs.85).aspx
私の問題は、何を変更すべきかよくわからないことです。Default テンプレートを見ると、次のように何かをする必要があると思います。
- トリガーをフックできる新しい「IsSelected」プロパティを作成します。
- ボタンを非表示にする IsSelected にトリガーがアタッチされた Clear Button のコントロール テンプレートを追加します。
- IsSelected Trigger を ComboBoxToggleButton コントロール テンプレートにアタッチして、選択時に非表示にしました。
PART_EditableTextBox
IsSelected が true の場合、ComboBox テンプレートのテキスト ボックスのサイズを何らかの方法で変更します。
これは正しいと思われますか?また、間違ったツリーを吠えている場合の方法やその他の提案についての指針はありますか?