gpt4 book ai didi

c# - MahApps Metro 主题 - 始终在 WPF 应用程序中的所有其他窗口前面显示对话框窗口

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:27 25 4
gpt4 key购买 nike

我是 WPF 和 Metro 样式的新手,遇到了以下问题:

我通过调用 ShowMessageAsync() 从应用程序的主窗口打开所有消息对话框,即使实际调用者是另一个窗口(例如设置窗口)也是如此。现在,例如,当这个设置窗口打开并想要显示设置已保存的消息时,对话框出现在主窗口和设置窗口之间(这是有道理的,因为主窗口是调用者,设置窗口是该主窗口的子窗口)。我想要的是由 ShowMessageAsynch() 创建的所有对话框始终显示在屏幕前。

关于如何实现这一点有什么想法吗?

预先感谢您的回答!

最佳答案

我知道这是一个较老的问题,但我在任何地方都找不到很好的答案。我最终最小化了所有子窗口,打开消息对话框,然后将子窗口设置回正常状态。我仍然很想知道这个问题是否有更好的解决方案。

    private MetroWindow MetroWindow => (MetroWindow)Application.Current.MainWindow;

public async Task ShowInfoDialog(string text)
{
var childWindows = MetroWindow.OwnedWindows;
MinimizeChildWindows(childWindows);
await MetroWindow.ShowMessageAsync("Info", text);
MaximizeChildWindows(childWindows);
}

private void MinimizeChildWindows(WindowCollection childWindows)
{
foreach (Window win in childWindows)
{
win.WindowState = WindowState.Minimized;
}
}

private void MaximizeChildWindows(WindowCollection childWindows)
{
foreach (Window win in childWindows)
{
win.WindowState = WindowState.Normal;
}
}

关于c# - MahApps Metro 主题 - 始终在 WPF 应用程序中的所有其他窗口前面显示对话框窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50723611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com