我正在写一个WPF用户控件(PARENT),它可以包含多个子对象(CHILD)用户控件。我将(CHILD)控件与多段线连接起来。如何“插入”WPF渲染周期以从VisualTreeHelper获得准确的结果?
为此,我需要CHILD用户控件的位置。 但是,我从VisualTreeHelper.GetOffset获得的位置为零。 WPF可能尚未完成大小调整并将CHILD控件放置在内存中,因为当我将代码放入控件的OnLoaded事件处理程序中时,我确实为我的子控件获取了正确的位置。
这是一个问题,因为即使在我加载了我的PARENT控件后,我仍然希望能够添加CHILD控件并更新我的行。
我目前如何解决这个问题是通过重写我的CHILD控件的OnRender并为我的MAIN控件引发一个事件,以便它知道它可以使用VisualTreeHelper来获取正确的值。
但是这意味着我需要重新绘制线条,直到最后一个CHILD控件完成渲染。
我现在的解决方案更像是一种解决方案而不是解决方案。如何“插入”WPF渲染周期以从VisualTreeHelper获得准确的结果?
不确定我提供了一个更好的选项,但您可以在加载优先级(正好在渲染优先级下方)向调度程序分派一个操作,以确保渲染完成。查看我的帖子了解更多信息:http://www.japf.fr/2009/10/measure-rendering-time-in-a-wpf-application/ – japf 2009-10-29 15:54:59