对于内部工具,我需要创建类似于Blender的节点编辑器(见下图)或UE4的WPF蓝图编辑器。
后端和各个块不是问题,但我不确定如何使用任意大小和扩展的画布。我考虑在Canvas
内部使用ScrollViewer
,但我认为向左滚动很困难(例如,如果用户必须在ScrollViewer
认为的左边添加节点边缘)。我对WPF比较陌生,所以有人能指出我正确的方向吗?
答案 0 :(得分:4)
您必须使用Panel
界面编写自己的自定义IScrollInfo
实施。通过此界面,您可以使用ScrollOwner.InvalidateScrollInfo()
方法随时动态更改面板的范围大小。以下是一些可以帮助您入门的链接:
Ben Constable excellent blog post series about IScrollInfo
Virtualizing Canvas example implementation
您的最终代码应包含在ItemsControl
内使用自定义面板的ScrollViewer
。至于绘制块之间的连接,我个人会使用OnRender
代码在面板上方使用透明层,使用DrawingContext
绘制它们。
编辑:
结帐this article。这里有一个类似于工作节点编辑器的控件。