我正在使用一个XAML文件,其中包含两个面板(左图,右图)。这意味着两个观点。我还对每个视图使用两个ViewModel。如何将DataContext绑定到这种情况?
您需要每个人都有自己的ViewModel。您可能已经有一个具有多个ViewModels的视图。您是否有绑定到列表的项目控制?我通常这样做。
我将创建一个具有两个属性的ViewModel。
public class ParentScreenViewModel : ViewModelBase
{
public ViewModelBase LeftPanel
{
get {...}
set {...}
}
public ViewModelBase RightPanel
{
get {...}
set {...}
}
}
然后XAML将与这些结合:
<Panel x:Name="LeftPanel" DataContext="{Binding LeftPanel}" />
<Panel x:Name="RightPanel" DataContext="{Binding RightPanel}" />
无论如何,这就是我要做的。
您可以更改TreeView中任何子元素上的datacontext。
否则说,将两个面板设置为其各自的DataContext - 它将在父容器的(例如窗口或USERCONTROL)DATACONTEXT上进行预定。
如果您有例如两个stackpanel,尝试以下操作:
<StackPanel x:Name="spFirst" />
<StackPanel x:Name="spSecond" />
和代码范围:
FirstViewModel vm1 = new FirstViewModel();
SecondViewModel vm2 = new SecondViewModel();
spFirst.DataContext = vm1;
spSecond.DataContext = vm2;
在这里您有示例(DoubleDataContextexample.zip)。