有没有一种方法可以获取在内存中但尚未呈现的UIElement
的大小?
我目前有一个例程,它从DataTable
创建Grid
,然后将该网格添加到FixedDocument
中。我需要知道Grid
的大小,因为我想在需要时自动从纵向切换为横向; 或者甚至更改网格的FontSize
。
有没有一种方法可以获取在内存中但尚未呈现的UIElement
的大小?
我目前有一个例程,它从DataTable
创建Grid
,然后将该网格添加到FixedDocument
中。我需要知道Grid
的大小,因为我想在需要时自动从纵向切换为横向; 或者甚至更改网格的FontSize
。
你需要强制渲染该项,或者等待该项被渲染。然后你可以使用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
没有被赋予明确的高度或宽度。然而,强制渲染将考虑提供的标题文本和图标进行渲染。Width
或Height
时,才能确定这一点。即使如此,在某些情况下,它也可能会在渲染时发生变化,因为布局传递直到渲染时才会发生,并且ActualWidth
/ActualHeight
被设置。