如何在mvvm中从另一个视图更新一个视图上的控件

如何在mvvm中从另一个视图更新一个视图上的控件,mvvm,dependency-injection,dependencies,prism,Mvvm,Dependency Injection,Dependencies,Prism,您好,我的MVVM应用程序中有三个基于区域的视图。我是MVVM新手,我想在点击按钮时从不同的视图更新DataGrid 一个视图有一个按钮,第二个视图有datagrid。我想在按下其他视图上的按钮时更新datagrid结果或绑定datagrid。我看到很少有关于用eventService做这件事的帖子,但我不知道怎么做。谁能给我举个例子,因为我是新来的,所以不确定。提前感谢。一个简单的解决方案是在两个视图中使用相同的ViewModel: 视图模型: public class MyModel : V

您好,我的MVVM应用程序中有三个基于区域的视图。我是MVVM新手,我想在点击按钮时从不同的视图更新DataGrid


一个视图有一个按钮,第二个视图有datagrid。我想在按下其他视图上的按钮时更新datagrid结果或绑定datagrid。我看到很少有关于用eventService做这件事的帖子,但我不知道怎么做。谁能给我举个例子,因为我是新来的,所以不确定。提前感谢。

一个简单的解决方案是在两个视图中使用相同的ViewModel:

视图模型:

public class MyModel : ViewModel
{
  static myModel;
  public static MyModel Current { get { if(myModel==null) myModel=new MyModel(); return myModel; } }

  public IEnumerable<T> Data { get { ... } set { /* Notification */ }}
  public ICommand SetData {get { return new DelegateCommand(()=>Data= /* return the data */); }
}
公共类MyModel:ViewModel
{
静态myModel;
公共静态MyModel当前{get{if(MyModel==null)MyModel=new MyModel();返回MyModel;}}
公共IEnumerable数据{get{…}集{/*通知*/}
public ICommand SetData{get{返回新的DelegateCommand(()=>Data=/*返回数据*/);}
}
按钮视图:

<Button Command={Binding SetData} />

数据网格视图:

<DataGrid ItemsSource={Binding Data} />

在两个视图的代码隐藏中,添加到构造函数: this.DataContext=MyModel.Current