在Show()之前获取Window的大小

时间:2013-12-07 16:13:39

标签: c# wpf

我需要使用Width的{​​{1}}和Height属性来确定屏幕上应显示的位置。

当然,只有在您实际绘制窗口(通过Window方法)之后才能使用这些内容。

现在我当前的黑客/解决方法是将Window.Show()Top属性设置为Left-9999,然后重新定位。

我想知道是否有非hacky方式这样做?

(旁注,看过文档后,我应该使用Show()ActualWidth属性)

4 个答案:

答案 0 :(得分:1)

您可以使用目标窗口的Loaded事件。在处理程序中,ActualWidth / ActualHeight和Width / Height都有效。

Window wnd; //...
wnd.Loaded += (object sender, RoutedEventArgs e) =>
{
    // Set wnd.Top and wnd.Left here.
};
wnd.ShowDialog();

答案 1 :(得分:0)

这可能听起来很傻但值得一试;

  

将Window的opacity属性设置为0%,然后显示Window并计算尺寸。

答案 2 :(得分:0)

取决于您实际尝试的操作,您可以使用布局系统:

http://msdn.microsoft.com/en-us/library/ms745058%28v=vs.110%29.aspx

例如,您可以覆盖MeasureOverride或ArrangeOverride以在布局期间检测新大小。

答案 3 :(得分:0)

我在这里遗漏了一些东西。您只需在IDE中设置“位置”和“大小”属性即可。您也可以在Show()之前以编程方式设置它们。