2011-07-26 4 views
1

私はクラスのアイテムから移入DataContextプロパティを持つリストボックスを持っているWPF:DataBindingプロパティを連結できますか?

私のような他のクラスのアイテムから、このDataContextの「連結」する必要が
lb.DataContext= myViewModel.sessions; 

:naturelly動作しません

lb.DataContext+=myViewModel2.sessions; 

を。既存のDataContextに項目を追加する方法はありますか?

+0

なぜmyViewModel.sessionsに追加すると、自動的に反映されますか。私はそのObservableCollection があれば、はるかに良いコレクションを願っています。 – anivas

答えて

1

ViewModelでは、2つのコレクションを連結した別のコレクションを作成してバインドするだけです。のDataContextのと仮定し、その後

private List<int> sessionList1 = new List<int>(); 
private List<int> sessionList2 = new List<int>(); 

public MyViewModel() 
{ 
    for (int i = 0; i < 10; i++) 
     sessionList1.Add(i); 
    for (int i = 10; i < 20; i++) 
     sessionList2.Add(i); 
} 

public ReadOnlyObservableCollection<int> AllSessions 
{ 
    get 
    { 
     ObservableCollection<int> combinedList = 
      new ObservableCollection<int>(sessionList1.Concat(sessionList2)); 
     return new ReadOnlyObservableCollection<int>(combinedList); 
    } 
} 

そして、:

簡単な例については、ここでは部分的ViewModelに(私はint型を使用していますが、あなたのセッションがあるオブジェクトどんな代用する必要がありますことに注意してください)ですあなたは(つまり、おそらくのObservableCollectionまたはReadOnlyObservableCollectionのいずれか)を返すために右のコレクションを考え出す必要があります

 <ListBox ItemsSource="{Binding AllSessions}" /> 

、あなたが適切にあなたのセッションを連結する必要がありますが、これは取得する必要があります:私のビューがMyViewModelにバインドされていますあなたは行く。

関連する問題