【问题标题】:How to bind multiple viewmodels to a single xaml file in MVVM wpf?如何将多个视图模型绑定到 MVVM wpf 中的单个 xaml 文件?
【发布时间】:2019-01-18 05:43:51
【问题描述】:

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

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

如何克服这个问题?

【问题讨论】:

    标签: c# wpf xaml mvvm


    【解决方案1】:

    有几种方法。首先,您可以在 MainViewModel 中添加 ViewModel,它看起来像:

      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 中,您可以为不同的网格设置数据上下文,例如:

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

    【讨论】:

      猜你喜欢
      • 2013-01-12
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      相关资源
      最近更新 更多