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

时间:2012-08-07 01:16:59

标签: mvvm dependency-injection dependencies prism

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

一个视图有一个按钮,第二个视图有datagrid。我想在按下其他视图上的按钮时更新datagrid结果或绑定datagrid。我在使用eventService时看到的帖子很少,但我不确定如何。任何人都可以给我一些例子,因为我是新人所以不确定。提前谢谢。

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是在两个视图中使用相同的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 */); }
}

按钮视图:

<Button Command={Binding SetData} />

DataGrid视图:

<DataGrid ItemsSource={Binding Data} />

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