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

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

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

【问题讨论】:

    标签: wpf window size width


    【解决方案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

      其他人的行为类似。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多