我正在使用一个包含两个面板的xaml文件(左面板,右面板)。这意味着两种观点。 我还在每个视图中使用两个ViewModel。 如何将DataContext绑定到这种情况?
答案 0 :(得分:3)
您需要拥有自己的ViewModel。您可能已经拥有一个包含多个ViewModel的View。你有一个绑定到List的ItemControl吗?我经常这样做。
我会创建一个具有两个属性的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}" />
无论如何,这就是我要做的。
答案 1 :(得分:0)
您可以在树视图中的任何子元素上更改DataContext。
否则说,将两个面板设置为各自的DataContext - 它将优先于父容器(例如window或usercontrol)datacontext。
答案 2 :(得分:0)
如果您有例如两个StackPanel,试试这个:
<StackPanel x:Name="spFirst" />
<StackPanel x:Name="spSecond" />
在代码隐藏中:
FirstViewModel vm1 = new FirstViewModel();
SecondViewModel vm2 = new SecondViewModel();
spFirst.DataContext = vm1;
spSecond.DataContext = vm2;
Here你有例子(DoubleDataContextExample.zip)。