首页 文章

WPF:始终打开窗口和模态对话框

提问于
浏览
1

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

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

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

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

提前感谢您的意见!

P

1 回答

  • 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>
    

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

相关问题