WPF:永远打开窗口和模态对话

时间:2014-11-23 08:23:13

标签: wpf modal-dialog window

我的应用程序中有一个帮助窗口,可以随时在应用程序中打开。我的应用程序的主窗口是一个向导窗口,它打开模态对话框以及前面提到的非模态帮助窗口。只要用户需要帮助,就可以保持帮助窗口的打开和访问 - 从向导和向导打开的任何模态对话框。

首先在主窗口中打开帮助窗口并在之后打开模式对话框时,帮助窗口的行为类似于主窗口所拥有的并且在同一层次结构级别上 - 它将被禁用。首先在模态对话框中打开帮助窗口并随后关闭模式对话框时,将在主窗口中启用帮助窗口。所以看起来帮助窗口总是以某种方式绑定到当前的模态对话框,但仍然可以从任何模态父窗口访问。

我设法通过在模式对话框打开后隐藏并重新显示帮助窗口来解决问题。打开模态对话框时是否还有其他解决方案可以启用帮助窗口? TopMost属性对行为没有影响。

我想这是Windows中的一般模态对话行为,但我目前正在为我的应用程序使用WPF。

提前感谢您的意见!

P

1 个答案:

答案 0 :(得分:0)

如果它只是一个帮助窗口,为什么要走很长的路?

创建一个帮助项目并将其exe文件用作单独的进程。这样,模态窗口不会阻止您的帮助窗口:

System.Diagnostics.Process.Start("HelpWindow.exe");

修改

另一种解决方法是将所有模态窗口嵌入到同一窗口中,以防止仅点击主要内容:

<MainWindow>
    <Grid>
        <!-- main content of main window -->
        <local:MyMainUC/>

        <!-- any messageBox, modal window or dialog here -->
        <Border Background="#2000" Visibility="Collapsed">
            <local:MyDialogUC HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Border>
        <Border Background="#2000" Visibility="Collapsed">
            <local:MyMessageBox HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Border>
    </Grid>
</MainWindow>

因此,您只需更改边框的window.ShowDialog(),而不是Visibility