有没有办法获得驻留在内存中但尚未呈现的UIElement
的大小?
我目前有一个例程,可以从Grid
创建DataTable
,然后将网格添加到FixedDocument
。我需要知道Grid
的大小,因为如果需要,我想自动从肖像切换到横向;甚至更改网格的FontSize
。
答案 0 :(得分:19)
您需要强制渲染项目,或等待渲染项目。然后,您可以使用ActualHeight
和ActualWidth
属性。
强制渲染:
MenuItem item = new MenuItem();
item.Header = "bling";
item.Icon = someIcon;
//Force render
item.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
item.Arrange(new Rect(item.DesiredSize));
在此示例中,MenuItem
未被赋予明确的高度或宽度。但是,强制渲染将使其考虑提供的标题文本和图标。
答案 1 :(得分:1)
如果有明确的Width
或Height
设置,您只能确定这一点。即使这样,根据场景,它可能会在渲染时更改,因为布局传递在渲染之前不会发生,并且ActualWidth
/ ActualHeight
会被设置。