在我的 WPF 应用程序中,我有很多弹出的自定义对话框,以便用户可以使用以下命令执行各种操作someDialogClass.ShowDialog()
。为了确保对话框位于调用它的窗口顶部,我添加Topmost="True"
to the Window
对话框的 XAML 文件的标记。这有效,但对话框显示了every窗口打开——甚至其他应用程序。这真的很烦人。那么有没有办法让对话框强制始终位于其父级之上,但不一定位于其他应用程序之上?
这是一个简化版本Window
我拥有的对话框的标签(省略所有xmlns
stuff):
<Window
mc:Ignorable="d"
ShowInTaskbar="False"
Topmost="True"
WindowStartupLocation="CenterOwner"
ResizeMode="NoResize"
SizeToContent="WidthAndHeight"
WindowStyle="ToolWindow">
您需要设置Owner https://msdn.microsoft.com/en-us/library/system.windows.window.owner(v=vs.110).aspx of the Dialog https://msdn.microsoft.com/en-us/library/aa969773(v=vs.110).aspx/Window https://msdn.microsoft.com/en-us/library/system.windows.window(v=vs.110).aspx然后它将仅位于该窗口的顶部。
例如:
var loginForm = new LoginForm();
loginForm.Owner = Application.Current.MainWindow;
var success = loginForm.ShowDialog();
不要设置TopMost https://msdn.microsoft.com/en-us/library/system.windows.window.topmost(v=vs.110).aspx窗口上的属性,否则它将位于每个窗口的顶部。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)