9

有没有办法获取UIElement驻留在内存中但尚未渲染的 a 的大小?

Grid我目前有一个从 a创建 aDataTable然后将 Grid 添加到 a中的例程FixedDocument。我需要知道的大小,Grid因为如果需要我想自动从纵向切换到横向;甚至改变FontSize网格的。

4

2 回答 2

22

您需要强制渲染该项目,或等待该项目被渲染。然后,您可以使用ActualHeightActualWidth属性。

强制渲染:

  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没有给出明确的高度或宽度。但是,强制渲染将考虑提供的标题文本和图标来渲染它。

于 2011-02-03T18:36:23.990 回答
1

Width只有存在显式或Height集合时,您才能确定这一点。即使那样,根据场景,它可能会在渲染时发生变化,因为布局传递在它被渲染之前不会发生,并且ActualWidth/ActualHeight得到设置。

于 2011-02-03T18:22:48.130 回答