这份原稿.微-当一个视图变得可见时做某事

  • 本文关键字:视图 一个 wpf caliburn.micro
  • 更新时间 :
  • 英文 :


我目前正在进入WPF和Caliburn。Micro,目前还没有像MEF或Autofac这样的东西。

现在我正试图执行一些代码在一个视图模型后,它的视图变得可见。

在一个相关的教程中,这段代码在显示视图之前显示一个消息框:

protected override void OnActivate() 
{   
    MessageBox.Show("Page Two Activated"); //Don't do this in a real VM.   
    base.OnActivate();   
}  

。艾森伯格接着写道:

请记住,如果您有任何依赖于的激活逻辑视图已经加载,您应该重写Screen。OnViewLoaded而不是与OnActivate结合使用

这是我所拥有的:

protected override void OnViewLoaded(object view)
{
    base.OnViewLoaded(view);
    MessageBox.Show("OnPageTwoViewLoaded");
}

我也尝试过它通过一个Grid EventTrigger和一个cal:ActionMessage。但是在这三种情况下,MessageBox都是在视图可见之前出现的。

我肯定错过了什么,我做错了什么?

可能不是最优雅的解决方案,但我猜您可以从代码后面完成此操作,因为严格地说,这是您在这里尝试做的非常特定于视图/gui的事情。例如在OnInitialized或OnRender中。如果你给你的视图一个对EventAggregator的引用,你可以引发一个事件并使视图模型-或任何你想要的类,订阅这个事件并做它的事情。或者在显示MessageBox的情况下,除了在视图中,你不会在其他任何地方显示它

相关内容

  • 没有找到相关文章

最新更新