我在选择 dsl 的隔间形状上的属性时遇到问题。我想做的是:
我有一个带有一个隔间形状的 DSL,它在一个隔间中有许多属性。每个属性都有一个用于保存 c# 代码的文本字段。我编译此代码并将错误任务添加到错误列表中。我为错误任务的导航事件添加了一个事件处理程序。在这个处理程序中,我想选择导致错误的隔间形状的属性。我尝试了很多东西,但没有成功。这是我目前的选择逻辑:
public void Select(Rule rule)
{
Library.Field ruleField = rule.Field as Library.Field;
var ruleFieldPresentation = PresentationViewsSubject.GetPresentation(ruleField as ModelElement).FirstOrDefault() as ShapeElement;
VSDiagramView activeDiagramView = Diagram.ActiveDiagramView as VSDiagramView;
if (activeDiagramView != null)
{
var docView = activeDiagramView.DocView;
activeDiagramView.Selection.Clear();
docView.CurrentDiagram.ActiveDiagramView.Selection.Set(new DiagramItem(ruleFieldPresentation));
}
}
问题似乎是隔间形状的属性没有演示视图,因为我无法得到它。
如果有人能帮我解决这个问题,我会很高兴也很感激。
谢谢你问候曼努埃尔