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.