2011-07-26 71 views
1

我有了從類物品填充的DataContext屬性的列表框WPF:我可以連接DataBinding屬性嗎?

lb.DataContext= myViewModel.sessions; 

我需要「拼接」其他類的項目,像這樣的的DataContext:

lb.DataContext+=myViewModel2.sessions; 

是naturelly不起作用。有沒有辦法將項目添加到現有的DataContext?

+0

爲什麼你添加到myViewModel.sessions,它會自動反映。我希望它的一個集合,如果它的ObservableCollection 好多了。 – anivas

回答

1

在您的ViewModel中,只需創建另一個集合即兩個集合的連接並綁定到該集合。

舉個簡單的例子,這裏是一個局部視圖模型(請注意,我用的整數,但你必須替換無論你的會話對象是):

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); 
    } 
} 

然後,假設的DataContext的我的看法是必然MyViewModel:

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

您將需要拿出正確的集合返回(即可能要麼的ObservableCollection或ReadOnlyObservableCollection),你會需要適當拼接的會議,但這應該得到你去。

相關問題