WPF中的“无限”面板

对于内部工具,我需要创建类似于Blender的节点编辑器(请参阅下图)或UE4的WPF蓝图编辑器。

Blender的节点编辑器

后端和单个块不是问题,但我不确定如何去处理任意大小和扩大的画布。 我想过在ScrollViewer使用Canvas ,但我认为这很难向左滚动(即如果用户必须在ScrollViewer认为是边缘的左侧添加节点)。 我对WPF比较陌生,所以有人能指出我正确的方向吗?


您将不得不使用IScrollInfo接口编写自己的自定义Panel实现。 通过此接口,您可以随时使用ScrollOwner.InvalidateScrollInfo()方法动态更改面板的区域大小。 以下是一些可以帮助你开始的链接:

Ben Constable关于IScrollInfo的优秀博客文章系列

虚拟化Canvas示例实现

你的最终代码应该包含一个在ScrollViewer使用自定义面板的ItemsControl 。 至于绘制块之间的连接,我个人会使用OnRender代码在面板上方使用透明图层,并使用DrawingContext绘制它们。

编辑:

看看这篇文章。 这里有一个工作节点编辑器控制。

链接地址: http://www.djcxy.com/p/27589.html

上一篇: "Infinite" Panel in WPF

下一篇: Passing a number to parseFloat() instead of string