4

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

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

4

1 回答 1

2

我相信,如果你运行一个Measure &Arrange传递,传递一个无穷大Size,你将能够得到DesiredSize.

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

control.Arrange(new Rect(infiniteSize));

更正:

正如评论中提到的那样,只需Measure()使用无限调用Size就可以了;不要使用Arrange().

于 2013-05-03T15:25:33.070 回答