我有一个ListBox,它具有从类项
填充的DataContext属性lb.DataContext= myViewModel.sessions;
我需要从其他类项“连接”此DataContext,例如:
lb.DataContext+=myViewModel2.sessions;
自然不起作用。有没有办法将项添加到现有的DataContext?
答案 0 :(得分:1)
在ViewModel中,只需创建另一个集合,该集合是两个集合的串联,并绑定到该集合。
举一个简单的例子,这里是一个部分ViewModel(注意我使用了int,但你必须替换你的Sessions对象):
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);
}
}
然后,假设我的View的DataContext绑定到MyViewModel:
<ListBox ItemsSource="{Binding AllSessions}" />
您需要提供正确的集合来返回(即可能是ObservableCollection或ReadOnlyObservableCollection),并且您需要适当地连接您的会话,但这应该可以帮助您。