2

我有 MainWindow,它有一个按钮,允许它打开另一个 WPF 窗口。我希望这个窗口总是在 MainWindow 的右侧打开,几乎就在它旁边。

我怎样才能做到这一点?即使 MainWindow 的宽度发生变化,这也需要工作,因为我在 MainWindow 上有各种按钮,可以根据可见的面板更改 MainWindow 的大小。

4

2 回答 2

0

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

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();
    }
于 2012-08-30T11:53:26.197 回答
0

如果您有对另一个窗口的引用,您可以计算您想要新窗口的位置。

通过访问 Left 和 Top 属性以及通过访问 ActualWidth 或 Width 属性获取其宽度来获取其他窗口的位置。

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

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

其他人的行为类似。

于 2012-08-30T11:48:20.373 回答