0
我想在视图模型中发生某些情况时在视图中执行某些代码。我已经调查棱镜事件聚合但我还没有得到与棱镜5.成功如果没有这样做,这将是helpful.Any博客或关于相同的代码也将工作如何从视图模型进行通信以在WPF中的MVVM中查看
我想在视图模型中发生某些情况时在视图中执行某些代码。我已经调查棱镜事件聚合但我还没有得到与棱镜5.成功如果没有这样做,这将是helpful.Any博客或关于相同的代码也将工作如何从视图模型进行通信以在WPF中的MVVM中查看
爱德宾吉说更简单的方法,所要做的就是在你的视图中监听DataContextChanged,因为View是连接到ViewModels的。
下面是一个例子:
public partial class MyView : UserControl
{
public MyView()
{
DataContextChanged += MyView_DataContextChanged;
}
private void MyView_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
//new ViewModel has been set.
MyViewModel myViewModel = e.NewValue as MyViewModel;
if (myViewModel != null)
{
//check for property changes
myViewModel.PropertyChanged += MyViewModel_PropertyChanged;
//custom event for specific update
myViewModel.MyCustomEventTriggered += MyViewModel_MyCustomEventTriggered
}
}
private void MyViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
//do your logic
}
private void MyViewModel_MyCustomEventTriggered(object sender, MyCustomEventArgs e)
{
//do your logic
}
}
请看看该条目:http://stackoverflow.com/questions/15439841/mvvm-in-wpf-how-to-alert-viewmodel-of-changes -in-model-or-should-i?rq = 1 – Ugur
INotifyPropertyChanged是要走的路。或定期举办活动。在视图中,添加一个DataContextChanged处理程序。当你获得datacontext时,将其转换为你的viewmodel类型并为PropertyChanged或其他类型添加处理程序。 –