WPF - Get size of UIElement in Memory?

后端 未结 2 1789
我在风中等你
我在风中等你 2020-12-10 15:52

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

2条回答
  •  无人及你
    2020-12-10 16:42

    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.

提交回复
热议问题