2012-08-30 112 views
2

我有MainWindow它有一個按鈕,允許它打開另一個WPF窗口。我希望這個窗口總是在MainWindow的右邊打開,幾乎就在它旁邊。第二個窗口定位WPF

我該怎麼做?這需要工作,即使MainWindow的寬度發生變化,因爲我在MainWindow上有各種按鈕,可以根據可見的面板更改MainWindow的大小。

回答

0

如果您有對其他窗口的引用,則可以計算出新窗口的位置。

通過訪問ActualWidth或Width屬性訪問Left和Top屬性及其寬度,獲取其他窗口位置。

現在您可以通過添加Left + Width + Some spacing來計算新的窗口位置。

退房這裏Left屬性的文檔: http://msdn.microsoft.com/en-us/library/system.windows.window.left.aspx

其他人相若方式表現。

0

您需要設置的屬性或代碼,第二個窗口手動啓動位置:

WindowStartupLocation = WindowStartupLocation.Manual; 

在加載事件,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(); 
    } 
+0

謝謝,它工作的一種享受。 –