WPF + Caliburn Micro:如何捕获Window Close事件?

Mag*_*agB 9 c# wpf caliburn.micro

我是Caliburn Micro的新手,并从这个helloworld示例中学习它.在该示例中,只有2个类型为Application和UserControl的视图(.xaml)和1个视图模型.

我避免使用代码.因此我只有查看和查看模型.我想知道如何捕获我的helloworld应用程序的窗口关闭事件,以便我可以在视图模型中处理它.我的目标:当用户通过按右上角的[x]按钮关闭应用程序时,应用程序会向用户提供反馈.
我已阅读有关IViewAware和IScreen的内容,但我没有找到与我的问题相关的具体示例.

我们非常感谢视图和视图模型的简单示例代码.提前致谢.

PS.我用的是VS2013,C#.

123*_*9 0 11

你可以做的就是View你可以Caliburn Micro通过使用附加

cal:Message.Attach="[Event Closing] = [Action OnClose($eventArgs)]"
Run Code Online (Sandbox Code Playgroud)

所以它看起来像

<Window cal:Message.Attach="[Event Closing] = [Action OnClose($eventArgs)]">
Run Code Online (Sandbox Code Playgroud)

和你的ViewModel,你可以只定义,说一个公共方法OnCloseCancelEventArgs作为参数,你可以从那里处理它.

  • 是的,它应该是`Window`或任何有'Closing`事件的东西 (2认同)

gco*_*res 9

如果您的 ViewModel 继承了 Screen,Caliburn Micro 有一些您可以覆盖的方法,例如

protected override void OnDeactivate(bool close); 
Run Code Online (Sandbox Code Playgroud)

当屏幕关闭或停用或

public override void CanClose(Action<bool> callback)
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看 CanClose 的使用情况