我正在使用XAML / C#处理一些布局内容,并且由于某些原因我无法使用SizeToContent =“Width”选项,但我想在某些情况下模拟它.我有一个用户控件坐在扩展器内部,我希望能够获得该用户控件的ActualWidth,以便在展开扩展器时,我可以相应地增加GridColumn和窗口的大小.因为Expander以IsExpanded =“False”开始,所以ActualWidth属性读为0.0.有没有什么办法可以让用户控件的ActualWidth像完全可见并且SizeToContent =“Width”生效?
我一直在拼命想弄清楚如何计算这个宽度而不用硬编码实际值.当展开器折叠时,DesiredSize.Width和RenderedSize.Width也都返回0.0
最佳答案 我相信,如果你运行一个测量&安排传球,传递无限大小,你将能够获得DesiredSize.
var infiniteSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
control.Measure(infiniteSize);
control.Arrange(new Rect(infiniteSize));
更正:
正如评论中所提到的,只需调用具有无限大小的Measure()就可以了.不要使用Arrange().