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

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

最佳答案

我相信,如果您运行 MeasureArrange 传递,传入无限的 Size ,您将能够获得 DesiredSize

var infiniteSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
control.Measure(infiniteSize);
control.Arrange(new Rect(infiniteSize));更正:
正如评论中提到的,只需使用无限 Measure() 调用 Size 就可以了;不要使用 Arrange()

关于c# - 查找用户控件的实际宽度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16361657/

10-11 17:16