WPF中的"无限"小组

Nic*_*ick 7 c# wpf

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

Blender的节点编辑器

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

gho*_*ord 6

您必须Panel使用IScrollInfo接口编写自己的自定义实现。通过此界面,您可以随时使用ScrollOwner.InvalidateScrollInfo()方法动态更改面板的范围大小。以下是一些可以帮助您入门的链接:

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

虚拟化 Canvas 示例实现

您的最终代码应包含ItemsControlScrollViewer. 至于绘制块之间的连接,我个人会使用面板上方的透明层以及OnRender使用DrawingContext.

编辑:

看看这篇文章。这里有一个类似工作节点编辑器的控件。