2009-07-16 18 views
2

ObservableCollectionのアイテムにデータバインドされたコンボボックスがあります。私はnullに "SelectedValue"にバインドしているプロパティの値を設定する(なし)既定の選択項目を持っていると思います。WPFのデータバインドされたItemsControlへのアイテムの追加

私はスタイル/ DataTemplate/TemplateSelectorのいくつかの組み合わせでこれを達成する方法があるべきだと思います。私はMVVMでこれを念頭に置いて設計しようとしているので、コードビハインドを使用せず、可能な限り再利用可能なものをお望みです。またObservableCollection(コレクションを更新してコントロールを再バインドさせる)のメリットがそのまま残るようにしたいと思います。

ボーナスパートB: また、ItemsControlの下部に追加のビジュアルエレメントを追加することもできます。私は、コレクションの最後のアイテムでトリガーする方法を知っていれば、DataTemplateを変更するのは簡単だと思っていました。ここに他の選択肢を楽しませたい。

答えて

1

これを行う最も簡単な方法は、基になるコレクションに「特別な」値を挿入し、選択したときに「(なし)」テキストを表示することです。明らかに、この値を考慮に入れてコンバータを使用してバインディングを実行し、選択時にnullを返す必要があります。実際のnull値をコンボボックスの基になるコレクションに追加しようとした結果、this questionを参照してください。

実際には、CompositeCollectionクラスでは可能です。別のコレクション(1つのアイテム、つまりNullアイテム)を作成し、ComboBoxをCompositeCollectionを介して元のコレクションにバインドすることができます。

+0

私はこれを試しました。私は、DataContext(例:)のオブジェクトからプロパティにCollectionContainerの "Collection"プロパティをバインドするのは大したことではありません。静的なリソースから素晴らしい作品...私はここに何かを逃している? –

関連する問題