WPF中的“无限”面板
对于内部工具,我需要创建类似于Blender的节点编辑器(请参阅下图)或UE4的WPF蓝图编辑器。
后端和单个块不是问题,但我不确定如何去处理任意大小和扩大的画布。 我想过在ScrollViewer
使用Canvas
,但我认为这很难向左滚动(即如果用户必须在ScrollViewer
认为是边缘的左侧添加节点)。 我对WPF比较陌生,所以有人能指出我正确的方向吗?
您将不得不使用IScrollInfo
接口编写自己的自定义Panel
实现。 通过此接口,您可以随时使用ScrollOwner.InvalidateScrollInfo()
方法动态更改面板的区域大小。 以下是一些可以帮助你开始的链接:
Ben Constable关于IScrollInfo的优秀博客文章系列
虚拟化Canvas示例实现
你的最终代码应该包含一个在ScrollViewer
使用自定义面板的ItemsControl
。 至于绘制块之间的连接,我个人会使用OnRender
代码在面板上方使用透明图层,并使用DrawingContext
绘制它们。
编辑:
看看这篇文章。 这里有一个工作节点编辑器控制。
链接地址: http://www.djcxy.com/p/27589.html