WindowStartupLocation如何与许多窗口一起使用

时间:2016-02-11 08:30:33

标签: c# wpf

我有很多窗户,每次打开新窗口时我希望位置与上一个窗口相同。

我在每个窗口都试过这个:

WindowStartupLocation="CenterOwner"

但它不起作用:窗口仍然会弹出其他地方。

我试图在我的一个窗口中设置所有者,但这仍然无效。我也从this问题尝试了解决方案,但仍然没有快乐。

我如何确保每次打开新窗口(在上一个窗口关闭后)我获得与上一个窗口相同的位置?

1 个答案:

答案 0 :(得分:1)

您可以在XAML(在每个窗口文件中)设置Windows默认位置,如:

<Window x:Class="TabControl.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        
    xmlns:local="clr-namespace:TabControl"
    Title="MainWindow"    Height="300"          
    Top="100"
    Left="100"

在您的情况下您可以获取父窗口的属性并将其设置为后面代码中的子窗口。(因为您想在父窗口的位置打开)< / p>

    {
        InitializeComponent();
        var activeWindow = System.Windows.Application.Current.Windows.OfType<Window>().FirstOrDefault(win=>win.IsActive);
        if(activeWindow != null)
        {
            this.Top = activeWindow.Top;
            this.Left = activeWindow.Left;
        }
    }

代替this.Parent,您可以替换父窗口对象。希望窗户的大小不是您的关注点。