选择隔间形状的属性

时间:2014-03-07 15:53:26

标签: visual-studio visual-studio-2012 dsl dsl-tools

我在dsl的隔离区选择属性时遇到问题。我想做的是:

我有一个带有一个隔间的DSL,它在一个隔间中有许多属性。每个属性都有一个用于保存c#代码的文本字段。我编译此代码并将错误任务添加到错误列表中。我为错误任务的导航事件添加了一个事件处理程序。在这个处理程序中,我想选择负责错误的compartmentshape的属性。我尝试了很多东西,但没有成功。这是我目前的选择逻辑:

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));
  }
}

问题似乎是隔离专区的属性没有展示视图,因为我无法得到它。

如果有人能帮我解决这个问题,我会很高兴也很感激。

谢谢 关心曼努埃尔

1 个答案:

答案 0 :(得分:0)

我想从错误列表中打开一个错误。有一个比错误使用导航事件更好的解决方案。更好的解决方案是向域类添加验证规则,并将错误与上下文一起添加到错误列表中。比导航到物业开箱即用。

context.LogError(errorDescription, "GAIN001RuleCompilationError", Field);