我正在创建一个基于节点的编辑器,其中节点存储在画布中,每个节点都有多个表示输入/输出的椭圆元素。
不过,我无法弄清楚在哪里绘制每条线的起点和终点。目前,我获取节点视图(通过使用 ItemGenerator.GetContainerFromItem),然后通过遍历可视化树找到椭圆控件,并将点 [0,0] 从椭圆局部空间转换为画布局部空间,并在画布空间。然后,每当节点位置发生变化时,我都会刷新。
这在一定程度上有效,但不适用于以下情况
1) 节点的布局发生变化,例如,当调整节点大小或更新其面板之一时,导致椭圆相对于节点本身移动/定位不同。
2)有时当我添加大量节点时,无论出于何种原因,节点视图都没有加载,因此遍历可视化树无法找到椭圆。
我尝试过的事情
- 使用 layoutupdate 事件解决问题 1,但这些事件是为每个控件引发的,因此速度非常慢。我只想在需要时更新,而不是在更新一些不相关的控件时。
- 通过调度具有后台优先级的更新以希望加载控件来解决问题 2。这有帮助,但仍然会时不时地失败
我想说类似的话
将线 P1 绑定到 [椭圆位置转换为画布空间]
有任何想法吗?