跟踪元素位置的WPF



Im正在创建一个基于节点的编辑器,其中节点存储在画布中,每个节点都有多个表示输入/输出的椭圆元素。

不过,我很难弄清楚每条线的起点和终点在哪里。目前,我获得了节点视图(通过使用ItemGenerator.GetContainerFromItem),然后通过遍历视觉树找到椭圆控件,并将点[0,0]从椭圆局部空间转换为画布局部空间,并在画布空间中绘制线。然后,每当节点位置发生变化时,我都会刷新。

这在一定程度上有效,但在以下情况下无效

1) 节点的布局会发生变化,例如,当调整节点的大小或更新其某个面板时,会导致椭圆相对于节点本身发生不同的移动/定位。

2) 有时,当我添加了很多节点时,无论出于什么原因,节点视图都没有加载,因此在视觉树上行走无法找到省略号。

我尝试过的

-用layoutupdate事件解决问题1,但这些事件是为每个控件引发的,因此速度非常慢。我只想在需要的时候更新,而不是在一些不相关的控件更新的时候。

-通过调度具有后台优先级的更新来解决问题2,希望加载控件。这是有帮助的,但仍然会时不时失败

我想说一些类似的话

将线P1绑定到[椭圆位置转换到画布空间]

有什么想法吗?

很可能您不需要正在做的任何事情。

请参阅我的示例,了解在WPF(MVVM)中执行此操作的正确方法

1/2/3/4

最新更新