在wpf中渲染之前获取实际控制宽度的问题

时间:2011-02-07 16:45:52

标签: wpf wpf-controls

我有一个托管控件的wpf窗口。 窗口的高度和宽度设置为SizeToControl

现在我需要将此窗口相对于其父窗口的位置放置。(基本上是右上角位置)。

(所以我的窗口Top = ParentWindow.Top, and Left = ParentWindow.Left + ParentWindow.ActualWidth - control.ActualWidth以便我的窗口位于父窗口内但位于右下角)

所以我需要设置窗口的顶部和左侧。要做到这一点,我需要在其中托管的控件的实际宽度....但我实际上只能做到这一点,

Window.Show(control,parent)

有没有办法解决这个问题?在实际显示控件之前,如何获得控件的实际渲染宽度?

谢谢!

1 个答案:

答案 0 :(得分: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;
        }
}