2011-09-08 3 views
1

アイテム間を移動するときに選択した値が失われています。マイCOMBOXボックスは、このようなものです:ComboboxのSelectedValueはnullアイテムに渡すときに変更を反映しません

<local:ComboBoxEx x:Name="MYCB" 
     ItemsSource="{Binding Committente}" 
     SelectedValue="{Binding CommittenteSelected, Mode=TwoWay}" 
     SelectionChanged="committente_SelectionChanged" 
/> 

CommittenteはViewModelにから来ている:

Committente = ObservableCollectionConverter.GetObservableCollection<CommittenteV>(Service.getList); 
Committente.Insert(0, null); 

そして:

private ObservableCollection<CommittenteV> _Committente; 
public ObservableCollection<CommittenteV> Committente 
{ 
    get { return _Committente; } 
    set 
    { 
     _Committente = value; 
     RaisePropertyChanged("Committente"); 
    } 
} 

私のviewmodelのコンストラクタで、私は私のコレクションは、このように成し遂げます「全アイテム」を象徴するアイテムを持たせるためにnullアイテムを追加します

私の手続きmは "本物の"アイテムからこのヌルアイテムに向かうものですが、私はCommittenteSelectedをnullにする代わりに、選択した先例アイテムの値を取得します。

これが機能しない場合、どうすれば私のフィルタのコンボボックスにフィードするこの「すべてのアイテム」機能をうまく実装できますか?あなたの助けのための

おかげで、

答えて

0

CommittenteVオブジェクトの子オブジェクトを作成して、選択されたオブジェクトをチェックするときに 'is'演算子を使用できるようにすることもできます。

public class AllCommittenteV : CommittenteV, IRepresentAll {} 

Committente.Insert(0, new AllCommittenteV()); 

if (SelectedItem is typeof(AllCommittenteV)) 
    // Use All 
else 
    // Use One 

これにより、ホスティングVMに注入できるプロセッサクラスを作成できるようになります。プロセッサクラスをSelectionChangedメソッドにスローし、注入するプリセッサを変更するだけで、クラスの動作全体を変更できます。

インターフェイスを使用すると、このオブジェクトが表現されているときは常にその状態を示すコントラクトがあり、そのオブジェクトをすべてが選択されたものとして扱うことができます。

+0

あなたの答えをありがとう、私はしばらくの間同じソリューションを考えていたが、私はいくつかの躊躇した。そこには私を気に入らないものがあります。その間に、私は完全に満足できるものではない別のアプローチを試みています。したがって、私のプローブが完成すると、私はあなたに私の最終的な答えを知らせます。 – Arthis

1

代わりのヌルにこれを設定するには、あなたはCommittenteVの「未指定/すべて」のインスタンスを返しますCommittenteVに静的CommittenteVを追加することができます。何かに似ています:

public static CommittenteV AllCommittente = new CommittenteV { Id = SomeUniqueValue }; 

次に、これに対してnullをチェックしてください。そして、するとき、あなたはあなたのリストに追加します。

Committente.Insert(0, CommittenteV.AllCommittente); 

おそらく与えること「AllCommittente」「本物」Committentesのいずれかによって使用されることはありません一意のID?また、このAllCommittenteエントリの表示ラベル(コンボボックスの表示値に使用されるプロパティがある場合)を作成することもできます。

+0

あなたの答えはありがとう、私はしばらくの間、同じような解決策を考えていたが、私はちょっと躊躇した。そこには私を気に入らないものがあります。一方、私は完全に満足できるものではない別のアプローチを試みています。したがって、私のプローブが完成すると、私はあなたに私の最終的な答えを教えてくれます。 – Arthis

+0

私はこれが最大の利点は、読める。しかし、それが正しいと感じない場合は、そうしてください! - このソリューションはアプリケーションのスタイルの残りの部分にはまったく適合しない可能性があります。 – Kevek

関連する問題