如何在渲染之前获取网格行的实际高度
本文关键字:网格 高度 获取 | 更新日期: 2023-09-27 18:32:07
在我的项目中,有许多嵌套的网格。大多数情况下,行和列宽度在 XAML 中定义为"*"。
我正在尝试通过将另一行的高度设置为 0 来扩展特定行(假设 Row1),并且我正在使用 .实际高度属性来获取 Row1 的宽度,然后它没有给我实际高度。
据我所知,这种情况正在发生,因为网格行和列的高度和宽度是在渲染时间上设置的。
我在网上搜索,有人建议使用UpdateLayout()方法。但这对我也不起作用。
我不能发布代码片段,因为它是很长的代码。
我在 C#.NET WPF 中的项目。
您需要进行完整的布局更新,即需要调用 Measure、Arrangement 和 UpdateLayout:
//Make the framework (re)calculate the size of the element
_Element.Measure(new Size(Double.MaxValue, Double.MaxValue));
Size visualSize = _Element.DesiredSize;
_Element.Arrange(new Rect(new Point(0, 0), visualSize));
_Element.UpdateLayout();
_Element是一个框架元素(网格就是其中之一)。
基于狒
狒帖子的解决方案对我有用。我需要对折叠的框架元素的幻灯片进行动画处理,不知道实际高度值的类似问题是什么。
element.Visibility = Visibility.Visible;
element.InvalidateArrange();
element.UpdateLayout();
double elementHeight = element.DesiredSize.Height;
DoubleAnimation animation = new DoubleAnimation(0, elementHeight, TimeSpan.FromMilliseconds(animMilisec));
element.BeginAnimation(Rectangle.HeightProperty, animation);
现在在渲染元素之前,我可以访问它的最终高度;