2014-03-07 41 views
0

我在选择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)); 
    } 
} 

问题似乎compartmentshape的财产不具有presentationview,因为我没有能够得到它。

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

谢谢 问候曼努埃尔

回答

0

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

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