Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将对话框放在窗口顶部,但不是所有对话框的顶部_C#_Wpf_Xaml_Layout_Dialog - Fatal编程技术网

C# 将对话框放在窗口顶部,但不是所有对话框的顶部

C# 将对话框放在窗口顶部,但不是所有对话框的顶部,c#,wpf,xaml,layout,dialog,C#,Wpf,Xaml,Layout,Dialog,在我的WPF应用程序中,我有许多自定义对话框,它们会弹出,因此用户可以使用someDialogClass.ShowDialog()执行各种操作。为了确保对话框位于调用它的窗口的顶部,我将topmest=“True”添加到对话框XAML文件的窗口标记中。这是可行的,但对话框会显示在每个打开的窗口上,即使是其他应用程序。这真让人讨厌。那么,有没有一种方法可以强制对话框始终位于其父应用程序之上,但不一定位于其他应用程序之上 下面是我拥有的对话框的窗口标记的简化版本(省略了所有xmlns内容): 您需

在我的WPF应用程序中,我有许多自定义对话框,它们会弹出,因此用户可以使用
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();