这是一个WPF / C#应用程序,我遇到的设计问题多于代码问题。
我有5个单独的* .xaml文件,实现了从窗口派生的类。所以,5个窗口。这是一个向导类型的应用程序,因此每个窗口都有后退/下一个按钮,它们将创建一个新窗口,隐藏自己并显示新窗口。
这不是纯粹基于导航的(所以我不使用页面),因为有时我想跳过一个窗口,或者回到第一个窗口等等。
每次打开一个新窗口时,父窗口都会将自己设置为新窗口的所有者并隐藏自己。使用后退按钮时,新窗口显示所有者并自行关闭。这适用于导航。
当有人实际关闭窗口而不是使用导航时,我遇到了问题。如果他们关闭窗口,Alt-F4,点击X等,它应该关闭整个应用程序。
我的“返回”按钮也会关闭窗口,触发Window_Closed,关闭整个应用程序。
我试图想办法在用户关闭窗口时关闭整个应用程序,但只关闭窗口(不隐藏它,实际处理它)并在他们点击后显示所有者。如果不触发前者,我似乎无法做到后者。
有什么建议吗?我只是没有以正确的方式思考这个问题。
答案 0 :(得分:2)
我不建议在Windows之间翻转,而是建议在面板中的UserControls之间进行翻转。您拥有Window的全部功能,除了您不必担心其打开/关闭状态。只需让UserControls根据Next / Previous命令切换可见性。
您可以考虑考虑为向导进行导航。您可以在WPF中以demonstrated here执行此操作。
通过导航,您可以拥有一个托管页面的窗口。然后,您可以发出命令以导航到特定页面,它将自动翻转到页面,而不必担心控制可见性。
答案 1 :(得分:1)
首先,我不会制作5个不同的 windows ,而是单个窗口,并在向导页面更改时替换它的内容。这对用户来说看起来更自然,问题根本不会显现出来。
其次,如果您坚持使用多个窗口进行设计,我只需取消订阅按钮单击处理程序(并在重新打开窗口时重新订阅)。