我目前正在编写一个 WPF 用户控件 (PARENT),它可以包含多个子 (CHILD) 用户控件。我正在将 (CHILD) 控件与折线连接起来。
为此,我需要 CHILD 用户控件的位置。但是,我从 VisualTreeHelper.GetOffset 获得的位置为零。WPF 可能还没有完成调整 CHILD 控件的大小并将其放置在内存中,因为当我将代码放在控件的 OnLoaded 事件处理程序中时,我确实获得了子控件的正确位置。
这是一个问题,因为即使在我加载了 PARENT 控件之后,我仍然希望能够添加 CHILD 控件并更新我的行。
我目前如何解决这个问题是通过覆盖我的 CHILD 控件的 OnRender 并为我的 MAIN 控件引发一个事件,以便它知道它可以使用 VisualTreeHelper 来获取正确的值。
然而,这意味着我需要重新绘制线条,直到最后一个 CHILD 控件完成渲染。
我目前的解决方案感觉更像是一种解决方法而不是解决方案。如何“插入”WPF 渲染周期以从 VisualTreeHelper 获得准确的结果?