开发者

WPF - Get size of UIElement in Memory?

开发者 https://www.devze.com 2023-02-08 04:14 出处:网络
Is there a way to get the size of a UIElement that resides in memory and has not yet been rendered? I currently have a routine that creates a Grid from a DataTable and then adds the Grid into a Fixed

Is there a way to get the size of a UIElement that resides in memory and has not yet been rendered?

I currently have a routine that creates a Grid from a DataTable and then adds the Grid into a FixedDocument. I need to know the size 开发者_开发技巧of the Grid because I want to automatically switch from Portrait to Landscape if needed; or even change the FontSize of the grid.


You need to force a render of the item, or wait for the item to be rendered. You can then use the ActualHeight and ActualWidth properties.

To force a render:

  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));

In this example the MenuItem has not been given an explicit height or width. However, forcing the render will render it taking the supplied header text and icon into consideration.


You can only determine this if there is an explicit Width or Height set. Even then, depending on the scenario, it may change at render time, since the Layout pass will not occur until it's rendered, and ActualWidth/ActualHeight get set.

0

精彩评论

暂无评论...
验证码 换一张
取 消