WPF:我可以连接DataBinding属性吗?

时间:2011-07-26 16:46:43

标签: wpf datacontext

我有一个ListBox,它具有从类项

填充的DataContext属性
lb.DataContext= myViewModel.sessions;

我需要从其他类项“连接”此DataContext,例如:

 lb.DataContext+=myViewModel2.sessions;

自然不起作用。有没有办法将项添加到现有的DataContext?

1 个答案:

答案 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),并且您需要适当地连接您的会话,但这应该可以帮助您。