我的设置如下。
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
我错过了什么?
答案 0 :(得分:1)
这甚至可以编译吗?我想你想要的是一个事件:
public event SearchPerformed OnSearchPerformed;
为什么你的eventhandler为null可能是因为向事件添加接收器的代码尚未被调用或者在该类的不同实例上被调用。您需要调试该行为或在此处发布更多代码。