C# 将对话框放在窗口顶部,但不是所有对话框的顶部
在我的WPF应用程序中,我有许多自定义对话框,它们会弹出,因此用户可以使用C# 将对话框放在窗口顶部,但不是所有对话框的顶部,c#,wpf,xaml,layout,dialog,C#,Wpf,Xaml,Layout,Dialog,在我的WPF应用程序中,我有许多自定义对话框,它们会弹出,因此用户可以使用someDialogClass.ShowDialog()执行各种操作。为了确保对话框位于调用它的窗口的顶部,我将topmest=“True”添加到对话框XAML文件的窗口标记中。这是可行的,但对话框会显示在每个打开的窗口上,即使是其他应用程序。这真让人讨厌。那么,有没有一种方法可以强制对话框始终位于其父应用程序之上,但不一定位于其他应用程序之上 下面是我拥有的对话框的窗口标记的简化版本(省略了所有xmlns内容): 您需
someDialogClass.ShowDialog()
执行各种操作。为了确保对话框位于调用它的窗口的顶部,我将topmest=“True”
添加到对话框XAML文件的窗口
标记中。这是可行的,但对话框会显示在每个打开的窗口上,即使是其他应用程序。这真让人讨厌。那么,有没有一种方法可以强制对话框始终位于其父应用程序之上,但不一定位于其他应用程序之上
下面是我拥有的对话框的窗口
标记的简化版本(省略了所有xmlns
内容):
您需要设置/的,然后它将仅位于该窗口的顶部
例如:
var loginForm = new LoginForm();
loginForm.Owner = Application.Current.MainWindow;
var success = loginForm.ShowDialog();
不要在窗口上设置属性,否则它将位于每个窗口的顶部。万岁!预期的行为!谢谢应用程序似乎没有一个名为“Current”的定义。即使我只使用x.Owner=this;它不起作用。ShowDialogue总是在应用程序窗口启动后将对话框放在屏幕上的任何位置,而不是在窗口移动后。修复了该问题:frm.StartPosition=FormStartPosition.CenterParent;如果调用yourForm.Show(),则基础(父)表单将可用并接受用户的输入。非常适合工具窗口
var loginForm = new LoginForm();
loginForm.Owner = Application.Current.MainWindow;
var success = loginForm.ShowDialog();