静态事件的替代方案WPF MVVM

时间:2018-12-15 16:45:51

标签: c# wpf events mvvm viewmodel

我试图将两个viewmodels彼此连接,最后使用static events。这是我所得到的概述。

  1. MainViewModel

  2. ChildViewModel

我试图在MainViewModel构造函数中实例化ChildViewModel

ChildViewModel childViewModel;
public MainWindowViewModel()
    {
        childViewModel = new ChildViewModel();
        childViewModel.TextStatusChanged += ChildViewModel_TextStatusChanged; 
    }

但是,此方法失败了,因为在此处创建的ChildViewModel实例以范围结尾结束,而且在其相关视图中创建的ChildViewModel实例与我创建的实例完全不同。在MainViewModel中创建。

然后我将其更改为使用此类静态事件

public MainWindowViewModel()
    {
        ChildWindowViewModel.TextStatusChanged += ChildViewModel_TextStatusChanged; 
    }

它就像魅力一样工作,但经过一番阅读后,我发现所有人都说静态事件很糟糕,因为它们可能导致内存泄漏。

我可以使用哪些替代静态事件的方法,或者如何附加相同的viewmodel实例来容纳同一事件。

1 个答案:

答案 0 :(得分:0)