如何调用ViewModel方法与结果从View在calburn . micro



在我的Caliburn。微项目我有一个窗口视图。

我使用一些调用视图中的ViewModel的方法:

private void ViewEvent1(object sender, RoutedEventArgs e)
{
  Caliburn.Micro.Action.Invoke(DataContext, "Event1Occured");
}
private void ViewEvent2(object sender, RoutedEventArgs e)
{
  Caliburn.Micro.Action.Invoke(DataContext, "Event2Occured");
}

它们工作得很好。

在我的视图中,我有一个方法来关闭窗口:

private void EventClose(object sender, RoutedEventArgs e)
{
  this.DialogResult = false;      
  Close();
}

不幸的是,在关闭生效之前,我必须检查ViewModel中的一些条件。

问题是调用return void,所以我不能调用返回值的方法。

是否有一个替代调用从ViewModel的方法获得结果?

你不想从视图中调用viewmodels的方法。有点打破了CMs能力背后的想法,即使是你声称有效的项目。

as eran otzap指出您需要使用约定或消息。另外,从视图调用视图模型上的方法会破坏一些东西,在这种情况下还不如不使用CM。有些人甚至会完全删除文件后面的代码,因为他们根本不使用它们。

其次,如果它与视图相关,那么它不会影响视图模型,但由于你正在调用视图模型,SoC和MVVM的前提被抛出,测试变得非常困难。

调用是不好的,事件传递可能稍微好一点,但仍然需要一些非常臭的代码来完成。

caliburnmicro.com上的文档非常清晰,github存储库上的示例对于CMs使用的理想非常彻底

最新更新