关闭窗口而不触发Window_Closed事件

时间:2011-10-21 18:23:23

标签: c# wpf xaml

这是一个WPF / C#应用程序,我遇到的设计问题多于代码问题。

我有5个单独的* .xaml文件,实现了从窗口派生的类。所以,5个窗口。这是一个向导类型的应用程序,因此每个窗口都有后​​退/下一个按钮,它们将创建一个新窗口,隐藏自己并显示新窗口。

这不是纯粹基于导航的(所以我不使用页面),因为有时我想跳过一个窗口,或者回到第一个窗口等等。

每次打开一个新窗口时,父窗口都会将自己设置为新窗口的所有者并隐藏自己。使用后退按钮时,新窗口显示所有者并自行关闭。这适用于导航。

当有人实际关闭窗口而不是使用导航时,我遇到了问题。如果他们关闭窗口,Alt-F4,点击X等,它应该关闭整个应用程序。

我的“返回”按钮也会关闭窗口,触发Window_Closed,关闭整个应用程序。

我试图想办法在用户关闭窗口时关闭整个应用程序,但只关闭窗口(不隐藏它,实际处理它)并在他们点击后显示所有者。如果不触发前者,我似乎无法做到后者。

有什么建议吗?我只是没有以正确的方式思考这个问题。

2 个答案:

答案 0 :(得分:2)

我不建议在Windows之间翻转,而是建议在面板中的UserControls之间进行翻转。您拥有Window的全部功能,除了您不必担心其打开/关闭状态。只需让UserControls根据Next / Previous命令切换可见性。

您可以考虑考虑为向导进行导航。您可以在WPF中以demonstrated here执行此操作。

通过导航,您可以拥有一个托管页面的窗口。然后,您可以发出命令以导航到特定页面,它将自动翻转到页面,而不必担心控制可见性。

答案 1 :(得分:1)

首先,我不会制作5个不同的 windows ,而是单个窗口,并在向导页面更改时替换它的内容。这对用户来说看起来更自然,问题根本不会显现出来。

其次,如果您坚持使用多个窗口进行设计,我只需取消订阅按钮单击处理程序(并在重新打开窗口时重新订阅)。