C# 视图中的多个DataContext vs MVVM?是这样吗?

C# 视图中的多个DataContext vs MVVM?是这样吗?,c#,wpf,datacontext,C#,Wpf,Datacontext,我有以下问题:我正在构建一个聊天WPF应用程序,我想让用户通过不同的帐户连接到GTalk。我制作了一个ViewModel,它允许处理通信,但我不知道处理DataContext的最佳方法是什么。我认为每个连接实例都需要不同的DataContext,但我不知道这是否正确,也不知道如何在视图中定义多个DataContext。aDataContext为视图中的元素提供默认绑定源。它在可视树中从父级继承到子级。通过将任何元素绑定到其父元素的某个属性,可以更改该元素的DataContext。这是创建绑定到子

我有以下问题:我正在构建一个聊天WPF应用程序,我想让用户通过不同的帐户连接到GTalk。我制作了一个ViewModel,它允许处理通信,但我不知道处理DataContext的最佳方法是什么。我认为每个连接实例都需要不同的DataContext,但我不知道这是否正确,也不知道如何在视图中定义多个DataContext。

a
DataContext
为视图中的元素提供默认绑定源。它在可视树中从父级继承到子级。通过将任何元素绑定到其父元素的某个属性,可以更改该元素的
DataContext
。这是创建绑定到子视图模型的“孤岛”的常用方法

例如,如果用户视图模型具有
地址
属性,则可以在
地址用户控件
中呈现该属性,如下所示:

<StackPanel>
   ... elements bound to properties of User ...

   <AddressUserControl DataContext="{Binding Address}"/>
</StackPanel>

... 绑定到用户属性的元素。。。

如果帐户数量可变,则可以使用ItemsControl

这背后的大致想法是:您可以将ItemsControl绑定到主ViewModel中的“子ViewModels”列表,并为每个子ViewModel定义一个DataTemplate(=视图)。每个DataTemplate的DataContext将自动分配给ViewModel列表中的相应项