查找用户控件的ActualWidth

时间:2013-05-03 14:45:23

标签: c# wpf xaml actualwidth

我正在处理一些使用XAML / C#的布局内容,由于某些原因我无法使用SizeToContent="Width"选项,但我想在某些情况下模拟它。我有一个用户控件坐在扩展器内部,我希望能够获得该用户控件的ActualWidth,以便在展开扩展器时,我可以相应地增加GridColumn和窗口的大小。因为Expander以IsExpanded="False"开始,所以ActualWidth属性读为0.0。有没有办法让我可以获得用户控件的ActualWidth,好像它完全可见并且SizeToContent="Width"生效了?

我一直在拼命想弄清楚如何在不硬编码实际值的情况下计算这个宽度。当展开器折叠时,DesiredSize.WidthRenderedSize.Width也都返回0.0

1 个答案:

答案 0 :(得分:2)

我相信如果你运行Measure & Arrange 传递,传入无限Size,您将能够获得DesiredSize

var infiniteSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
control.Measure(infiniteSize);

control.Arrange(new Rect(infiniteSize));

校正:

如评论中所述,只需使用无限Measure()调用Size即可。不要使用Arrange()