Wpf 单个xaml文件中的MVVM双视图模型

Wpf 单个xaml文件中的MVVM双视图模型,wpf,mvvm,Wpf,Mvvm,我使用的是一个包含两个面板(左面板、右面板)的xaml文件。这意味着两种观点。 我还在每个视图中使用两个ViewModel。 如何将DataContext绑定到这种情况?您可以更改树视图中任何子元素的DataContext 否则,将两个面板设置为各自的DataContext-它将优先于父容器(如窗口或用户控件)的DataContext。您可以更改树视图中任何子元素的DataContext 否则,将两个面板设置为各自的DataContext-它将优先于父容器(如窗口或用户控件)的DataConte

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

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


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

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


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

如果您有两个StackPanel,请尝试以下操作:

<StackPanel x:Name="spFirst" />

<StackPanel x:Name="spSecond" />

您有一个示例(DoubleDataContextExample.zip)。

如果您有例如两个StackPanel,请尝试以下方法:

<StackPanel x:Name="spFirst" />

<StackPanel x:Name="spSecond" />

您有一个示例(DoubleDataContextExample.zip)。

您需要每个示例都有自己的ViewModel。您可能已经有了一个包含多个ViewModels的视图。您是否有绑定到列表的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}" />


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

您需要每个视图都有自己的ViewModel。您可能已经有了一个包含多个ViewModels的视图。您是否有绑定到列表的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}" />


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

我试过这个,但不起作用。我无法将“视图模型”设置为“堆栈面板”。@Lakshmanan我为您创建了一个示例,它在我的答案的底部。我尝试了这个,但不起作用。我无法将视图模型设置为堆栈面板。@Lakshmanan我为您创建了一个示例,它在我的答案的底部。