Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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
MVVM C#从不同的ViewModel刷新视图_C#_Wpf_Mvvm_Inotifypropertychanged - Fatal编程技术网

MVVM C#从不同的ViewModel刷新视图

MVVM C#从不同的ViewModel刷新视图,c#,wpf,mvvm,inotifypropertychanged,C#,Wpf,Mvvm,Inotifypropertychanged,假设您使用的是MVVM模式: 您有一个显示一些数据的Datagrid第一视图 从第一个视图打开第二个视图,第二个视图绑定到与第一个视图不同的ViewModel 第二视图有一个“获取”按钮,该按钮获取应在第一视图数据网格中显示的数据 每个Viewmodel都知道相同的静态模型 BaseViewModel实现INotifyPropertyChanged 每个Viewmodel都是从BaseViewModel派生的 点击“获取按钮”后,如何刷新第一视图而不必在第一视图中刷新 提前感谢。请注意,在M

假设您使用的是MVVM模式:

  • 您有一个显示一些数据的Datagrid第一视图
  • 从第一个视图打开第二个视图,第二个视图绑定到与第一个视图不同的ViewModel
  • 第二视图有一个“获取”按钮,该按钮获取应在第一视图数据网格中显示的数据
  • 每个Viewmodel都知道相同的静态模型
  • BaseViewModel实现INotifyPropertyChanged
  • 每个Viewmodel都是从BaseViewModel派生的
点击“获取按钮”后,如何刷新第一视图而不必在第一视图中刷新


提前感谢。

请注意,在MVVM中,1对1 V-VM不是一个经验法则。两个视图可以共享同一个模型。看看你的描述,我怀疑你是否真的需要第二个viewmodel!你能告诉我你在第二视图中做了什么吗?如何获取get按钮上的数据?我会A)为第一个viewmodel可以订阅的第二个viewmodel创建一个事件“OnGetButtonSAccess”,或者B)如果第二个视图不是很复杂,那么让第一个viewmodel也成为第二个视图的viewmodel。您使用的是特定的MVVM库吗?Messenger模式允许您解耦其他视图或视图模型正在侦听的元素和激发事件,然后刷新第一个视图作为响应。这样地: