在我的自定义 DSL 工具中,我希望其资源管理器中有一个无法删除的节点。除此之外,我希望它像一个常规节点。基本上我想要的是一个类似于DSL Explorer 中的Xml 序列化行为的节点:
Xml 序列化行为上下文菜单插图 http://img31.imageshack.us/img31/740/xmlserializerbehavior.png
通过在 Microsoft.VisualStudio.Modeling.Sdk.DslDefinition.dll 程序集中的 XmlSerializationDefinitionSerializer 类上使用 Reflector,我发现它只是 DomainClass 的派生类,因此(显然)没有什么特别之处。
我已经定义了一个用作节点的 DomainClass,右键单击它可以让我按照我想要的方式添加子节点,我就是无法摆脱删除菜单选项:
删除上下文菜单项插图 http://img705.imageshack.us/img705/9033/validators.png
我已经尝试了任何我能想到的... “验证器”节点丢失...我查看了 DomainClass 和根模型与验证器域类之间的 DomainRelationship 的所有属性,但似乎没有一个可以处理这个问题。我还查看了 DSL Explorer 窗口中 Explorer Behavior 节点中的所有内容。我完全被难住了。有人知道怎么做这个吗?