第二个窗口定位 WPF

Posted

技术标签:

【中文标题】第二个窗口定位 WPF【英文标题】:Second Window Positioning WPF 【发布时间】:2012-08-25 01:21:54 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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();
    

【讨论】:

【参考方案2】:

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

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

现在您可以通过添加左 + 宽度 + 一些间距来计算新窗口的位置。

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

其他人的行为类似。

【讨论】:

以上是关于第二个窗口定位 WPF的主要内容,如果未能解决你的问题,请参考以下文章

python+selenium怎么定位页面弹窗的元素

SDL2如何在第二台显示器上定位窗口?

python+selenium 两个同样的class怎么定位到第二个

定位类中的第一个和第二个值

ios自动布局标签定位

仅使用 css 更改顺序和定位