WPF - Get size of UIElement in Memory?

后端 未结 2 1786
我在风中等你
我在风中等你 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:35

    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 讨论(0)
  • 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.

    0 讨论(0)
提交回复
热议问题