Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在MVVM wpf中将多个viewmodels绑定到单个xaml文件?_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# 如何在MVVM wpf中将多个viewmodels绑定到单个xaml文件?

C# 如何在MVVM wpf中将多个viewmodels绑定到单个xaml文件?,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我在Mainwindow.xaml中有三个网格,每个网格中有多个控件。对于每个轴网,我都创建了一个单独的视图模型 但在Mainwindow.xaml中,我只能将DataContext属性设置为其中一个类,这只允许将数据绑定到其中一个网格 如何克服这个问题?几乎没有办法。首先,您可以在MainViewModel中添加ViewModels,使其看起来像: public class MainViewModel { public Grid1ViewModel G1VM {get;set;}

我在Mainwindow.xaml中有三个网格,每个网格中有多个控件。对于每个轴网,我都创建了一个单独的视图模型

但在Mainwindow.xaml中,我只能将DataContext属性设置为其中一个类,这只允许将数据绑定到其中一个网格


如何克服这个问题?

几乎没有办法。首先,您可以在MainViewModel中添加ViewModels,使其看起来像:

  public class MainViewModel
{
    public Grid1ViewModel G1VM {get;set;}
    public Grid2ViewModel G2VM {get;set;}
}
然后在您的窗口中,您应该设置它的数据上下文,如下所示:

public class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        DataContext = new MainViewModel()
        {
            G1VM = new Grid1ViewModel(),
            G2VM = new Grid2ViewModel()
        };
    }
}
然后在MainWindow.xaml中,可以为不同的网格设置datacontext,如:

<Window>
...
...
    <Grid DataContext="{Binding G1VM}"/>
    <Grid DataContext="{Binding G2VM}"/>
</Window>

...
...