【问题标题】:How to communicate from view model to view in MVVM in WPF如何在 WPF 中的 MVVM 中从视图模型到视图进行通信
【发布时间】:2016-08-24 13:19:51
【问题描述】:

如果视图模型中发生某些事情,我想在视图中执行某些代码。我已经研究了 Prism 事件聚合器,但我还没有使用 prism 5 取得成功。如果有更简单的方法可以做到这一点,那将会很有帮助。任何关于此的博客或相同的代码也可以使用

【问题讨论】:

  • INotifyPropertyChanged 是要走的路。或定期活动。在视图中,添加一个 DataContextChanged 处理程序。当您获得数据上下文时,将其转换为您的视图模型类型并为 PropertyChanged 或其他任何内容添加处理程序。

标签: wpf mvvm


【解决方案1】:

正如 Ed Plunkett 所说,要做的事情是在您的视图中监听 DataContextChanged,因为这就是 View 连接到 ViewModel 的方式。

这是一个例子:

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
    }
}

【讨论】:

    猜你喜欢
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2014-07-10
    • 1970-01-01
    • 2011-10-12
    • 2013-08-31
    相关资源
    最近更新 更多