MVVM单个XAML文件中的两个ViewModel



我正在使用一个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)。

相关内容

  • 没有找到相关文章

最新更新