【发布时间】:2013-10-06 14:59:09
【问题描述】:
我目前正在开发一个允许用户编写一些脚本的应用程序。我开发了一个“编译器”来分析用户编写的脚本,但现在我想创建一个可视化编辑器,包含用户拥有的所有可能性,类似于:Blockly - A visual programming editor 。
我目前正在使用 C#,但我不知道如何开发类似上述的东西。我想过在我的 DSL 上做我自己的可拖动 UI,但不知道如何开始。
谢谢
【问题讨论】:
我目前正在开发一个允许用户编写一些脚本的应用程序。我开发了一个“编译器”来分析用户编写的脚本,但现在我想创建一个可视化编辑器,包含用户拥有的所有可能性,类似于:Blockly - A visual programming editor 。
我目前正在使用 C#,但我不知道如何开发类似上述的东西。我想过在我的 DSL 上做我自己的可拖动 UI,但不知道如何开始。
谢谢
【问题讨论】:
Blockly 是开源的,所以请随意将它用于您的编辑器。为了使用 Blockly 库,您实际上不需要了解太多 JavaScript,并且有一个 support group。
【讨论】:
对于尝试做类似事情的其他 Wpf 开发人员,我不建议自己这样做,而是实际使用 Wpf 中的网页,然后通过它与 Blockly 进行通信。我向你保证,这将比实际尝试自己做这件事要容易得多。
Use Blockly inside a WebBrowser
如果您不想重新创建所有脚本生成代码,您还可以为 Blockly 创建一个自定义 xml 生成器,然后打印出连接的块,如下所示:
<block>
<whileblock repeat="20"/>
<block/>
然后破译它并根据连接的块从 c# 生成脚本。
【讨论】:
你可以用 WPF 做到这一点。 使用拖放,您可以真正靠近。 观看this video 将帮助您了解该机制是否有效。 尝试慢慢改进并使用它。 第二步是玩列表和拖放 Like shown here 。 通过使用从鼠标位置获得的数据来进一步改进它, 一个很好的方法demonstrated here。
【讨论】: