Проблема получения фактической ширины элемента управления перед рендерингом в wpf - PullRequest
0 голосов
/ 07 февраля 2011

У меня есть окно wpf, в котором находится элемент управления. Высота и ширина окна установлены на SizeToControl.

Теперь мне нужно расположить это окно относительно позиции его родительского окна (в основном это верхняя правая позиция).

(То есть мои окна Top = ParentWindow.Top, and Left = ParentWindow.Left + ParentWindow.ActualWidth - control.ActualWidth, чтобы мое окно располагалось внутри родительского окна, но в его правом углу)

Так что мне нужно будет установить верхнюю и левую часть окна. Для этого мне нужна фактическая ширина элемента управления, который находится внутри него .... но я могу получить это только после того, как я это сделаю,

Window.Show(control,parent)

Есть ли способ обойти эту проблему? Как получить фактическую визуализированную ширину элемента управления до его фактического отображения?

Спасибо!

1 Ответ

1 голос
/ 07 февраля 2011

Вы пробовали этот подход?

    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;
        }
}
...