0

我正在使用一个包含两个面板(左面板,右面板)的 xaml 文件。这意味着两个视图。我还对每个视图使用了两个 ViewModel。如何将 DataContext 绑定到这种情况?

4

3 回答 3

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}" />

无论如何,这就是我会做的。

于 2012-11-02T15:45:03.360 回答
0

您可以更改树视图中任何子元素的 DataContext。

否则,将两个面板设置为各自的 DataContext——它将优先于父容器(例如窗口或用户控件)的数据上下文。

于 2012-11-02T15:36:15.210 回答
0

如果你有两个 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)。

于 2012-11-02T15:36:44.870 回答