2011-02-07 103 views
0

我有一個wpf窗口來託管控件。 窗口的高度和寬度設置爲SizeToControl在wpf中呈現之前獲取控制的實際寬度的問題

現在我需要定位這個窗口相對於其父窗口的位置(基本上是右上角的位置)。

(所以我的窗口Top = ParentWindow.Top, and Left = ParentWindow.Left + ParentWindow.ActualWidth - control.ActualWidth使我的窗口定位在父窗口內,但它的右下角)

所以我需要設置窗口的頂部和左側。要做到這一點,我需要的是被裏面承載控制的實際寬度....但我只能得到這一次我實際上做,

Window.Show(control,parent)

有沒有辦法來解決這個問題?如何在實際顯示之前獲得控件的實際渲染寬度?

謝謝!

回答

1

你試過這種方法嗎?

public partial class ShellWindow : Window 
    { 
     public ShellWindow(IShellPresentationModel model) 
     { 
      InitializeComponent(); 
      this.Loaded += ShellWindow_Loaded; 
     } 

     void ShellWindow_Loaded(object sender, RoutedEventArgs e) 
     { 
      var innerWindow = new InnerWindow(); 
      innerWindow.Owner = this; 
      innerWindow.Loaded += InnerWindow_Loaded; 
      innerWindow.Show(); 
     } 

     void InnerWindow_Loaded(object sender, RoutedEventArgs e) 
     { 
      var w = (InnerWindow)sender; 
      w.Owner = this; 
      w.Top = this.Top; 
      w.Left = this.Left + this.ActualWidth - w.ActualWidth; 
     } 
}