私はwpfアプリケーションに取り組んでおり、コンボボックスコントロールを使用しているときにItemsSourceを割り当てています。そのため、アイテムが選択されていないアイテムのリストが表示され、ユーザーは自分で選択したアイテムを選択できるようになります。ユーザーが選択を行った場合、それを元に戻すオプションはありません。アイテムが選択されていない初期状態を取得できるようにしてほしい。どうやってやるの?
3 に答える
Windowsフォームプログラミングでも同様の方法が複数あります。次のいずれかを実行できます。
1)デフォルトのレコードであるコンボボックスデータソースに空白または--None--レコードを追加します。2)keypressイベントを監視し、ESCキーを使用して選択したインデックスを-1にリセットすると言うことができます。
3)コンボボックスで入力が許可されている場合は、テキストをクリアしてオンリーブすることもできます。テキストフィールドが空白の場合は、selectedindexを-1に戻して、選択した値にリセットされないようにします。
多くの場合、私のユーザーはオプション1を好みますが、それが私のユーザーです。
それはあなたにいくつかのオプションを与えるはずです。
毎回、デフォルトの空白のレコード(インデックスが-1)を介して--None--レコードにリセットし直します。「selectionchanged」などのイベントをComboBoxで処理している場合、ボックスを-1に向けると、null参照エラーが発生するリスクがあります。必要な変更は設定されているだけなので、同じように簡単です。選択されたインデックスは、-1ではなく(たとえば)0になります。
myComboBox.SelectedIndex = 0; //where 0 is a given default content entry.
一般的に言って、WPFアプリケーションに複雑さを追加する必要がある場合は、XAMLに追加するよりもデータソースに追加する方が堅牢であることがわかります。
あなたの例では、これをデータソースで修正します。私が持っている場合:
public IEnumerable<Person> People { get {...} }
私のデータソースに、これを追加します:
public IEnumerable<Person> PeopleWithNull
{
get
{
return (new List<Person> { null }).Concat(People);
}
}