2009-09-04 12 views
6

コンボボックスに空のアイテムを入れて、 "Unselect"を選択してコンボボックスを空(Null値)にしておきたい。WPF:Nullable ComboBox

どうすればいいですか?

+0

きれいなnull可能なコンボボックスの完全な動作例については、私のブログを参照してください。http://www.blueedge.nl/weblog/post/Nullable-ComboBox-in-Silverlight.aspxを参照してください。ソリューションは、nullableを使用した2-wayデータバインディングをサポートしていますアイテム。 –

答えて

3

センチネル値を使用することで、あなたの人生を楽にしてください。つまり、何も表さないビューモデルクラスのインスタンスです。

+0

それは私が探しているものではありません。私は、選択されたアイテムを 'Null'にして、コンボボックスの他のアイテムのようなインスタンスにしないでください。 – Yannic

0

私のブログエントリhereを見ると、あなたのVMを "変更"する必要はなく、実際にデータに収まらないコレクションにダミーアイテムを追加する必要がないバインディングソリューションが見えます。

基本的に、XAMLでコンポジットコレクションを使用すると、(たとえば)コンボボックスに数値が表示され、「選択してください...」というプレースホルダを指定することができます。モデルの数値フィールドに完全にバインドしていて、このマジック値を追加することに頼っているのであれば、あなたはできません。

+2

私はピートに同意しなければならないと思うのですが、私が「プロの開発者」と呼んだのではない;)これは単純なセンチネルを使うよりも単なる方法であり、多くはそのビューを汚染する。私は間違ってはいけない、私はそれが確かに有効なオプションだと思う。しかし、私はセンチネルのシンプルさを好むと思います。また、VMはビューのモデルであるため、ビューに何も表現する必要がない場合は、VMに明示されている場所が外れているとは思われません。私の2p。 –

+0

あなたは国のリストを持っているとしますが、あなたの「センチネル」は説明のない国でなければなりませんか?あなたはデータベースを汚染しています。たぶん私は何かを理解していないかもしれません。 – Yannic

+1

VMを使用してバインドしている場合は、データをデータベースに格納する必要はありません。DataContextを設定する前に追加するだけで済みます。 ここで私はKentのPOVを理解していますが、これはバインディングしているデータのデータ型と互換性があることを監視者が制限するため、彼に同意しないといけません。ユーザーが選択できる整数のリストを表示したいが、選択してほしいということをユーザーに知らせるために「選択してください...」と表示するとします(上記のように)。 intを文字列に変換します。 –