C# 视图中的多个DataContext vs MVVM?是这样吗?
我有以下问题:我正在构建一个聊天WPF应用程序,我想让用户通过不同的帐户连接到GTalk。我制作了一个ViewModel,它允许处理通信,但我不知道处理DataContext的最佳方法是什么。我认为每个连接实例都需要不同的DataContext,但我不知道这是否正确,也不知道如何在视图中定义多个DataContext。aC# 视图中的多个DataContext vs MVVM?是这样吗?,c#,wpf,datacontext,C#,Wpf,Datacontext,我有以下问题:我正在构建一个聊天WPF应用程序,我想让用户通过不同的帐户连接到GTalk。我制作了一个ViewModel,它允许处理通信,但我不知道处理DataContext的最佳方法是什么。我认为每个连接实例都需要不同的DataContext,但我不知道这是否正确,也不知道如何在视图中定义多个DataContext。aDataContext为视图中的元素提供默认绑定源。它在可视树中从父级继承到子级。通过将任何元素绑定到其父元素的某个属性,可以更改该元素的DataContext。这是创建绑定到子
DataContext
为视图中的元素提供默认绑定源。它在可视树中从父级继承到子级。通过将任何元素绑定到其父元素的某个属性,可以更改该元素的DataContext
。这是创建绑定到子视图模型的“孤岛”的常用方法
例如,如果用户视图模型具有地址
属性,则可以在地址用户控件
中呈现该属性,如下所示:
<StackPanel>
... elements bound to properties of User ...
<AddressUserControl DataContext="{Binding Address}"/>
</StackPanel>
... 绑定到用户属性的元素。。。
如果帐户数量可变,则可以使用ItemsControl
这背后的大致想法是:您可以将ItemsControl绑定到主ViewModel中的“子ViewModels”列表,并为每个子ViewModel定义一个DataTemplate(=视图)。每个DataTemplate的DataContext将自动分配给ViewModel列表中的相应项