从子视图模型中提升事件

时间:2014-10-01 05:41:33

标签: c# wpf delegates

我的设置如下。

  • ContainerViewModel

  • SearchViewModel

  • ResultsViewModel

那是因为我不想在我的应用程序的不同部分使用SearchView和ResultsView

我的ContainerViewModel有一个其他VM的句柄,如

SearchViewModel searchbViewModel = new SearchbViewModel();
ResultsViewModel resultsViewModel = new ResultsViewModel();

每个视图模型都有自己的DataContext

我希望能够将一个事件从SearchViewModel引发到ContainerViewModel,让它知道已经执行了搜索。

这就是我的尝试:

ContainerViewModel

searchJobViewModel.OnSearchPerformed += SearchJobViewModel_OnSearchPerformed;

public void SearchJobViewModel_OnSearchPerformed()
{

}

SearchViewModel

public delegate void SearchPerformed();
public SearchPerformed OnSearchPerformed { get; set; }

public void Execute_SearchJobs()
{
  if (OnSearchPerformed != null) 
    OnSearchPerformed();
}

当我点击搜索按钮并且Execute_SearchJobs方法触发时,OnSearchPerformed始终为null

我错过了什么?

1 个答案:

答案 0 :(得分:1)

这甚至可以编译吗?我想你想要的是一个事件:

public event SearchPerformed OnSearchPerformed;

为什么你的eventhandler为null可能是因为向事件添加接收器的代码尚未被调用或者在该类的不同实例上被调用。您需要调试该行为或在此处发布更多代码。