第二个窗口定位WPF



我有一个MainWindow,它有一个按钮,可以打开另一个WPF窗口。我希望这个窗口总是在主窗口的右边打开,实际上就在它旁边

我该怎么做?即使主窗口的宽度发生变化,这也需要工作,因为我在主窗口上有各种按钮,可以根据可见的面板更改主窗口的大小。

如果有对其他窗口的引用,则可以计算出新窗口的位置。

通过访问Left和Top属性获取其他窗口的位置,并通过访问ActualWidth或width属性获取其宽度。

现在,您可以通过添加Left+Width+Some spacing来计算新窗口的位置。

请在此处查看Left属性的文档:http://msdn.microsoft.com/en-us/library/system.windows.window.left.aspx

其他人的行为相似。

您需要在属性或代码中为第二个窗口设置手动启动位置:

WindowStartupLocation = WindowStartupLocation.Manual;

在第一个窗口的Loaded、SizeChanged、LocationChanged事件中,您应该像这样调整第二个窗口的位置:

    public void AdjustPosition()
    {
        window2.Left = Application.Current.MainWindow.Left + Application.Current.MainWindow.ActualWidth;
        window2.Top = Application.Current.MainWindow.Top;
    }
    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
            AdjustPosition();
    }
    private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e)
    {
           AdjustPosition();
    }
    void MainWindow_LocationChanged(object sender, EventArgs e)
    {
           AdjustPosition();
    }

最新更新