2014-03-07 3 views
0

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

문제는 내가 그것을 얻을 수 아니에요 때문에 compartmentshape의 속성을하는 presentationview이없는 것 같다 : 이것은 내 현재의 선택 논리이다.

누군가이 문제로 나를 도울 수 있으면 매우 기뻤습니다.

는 감사합니다 마누엘

답변

0

내가 오류 목록에서 오류를 열고 싶었다 감사드립니다. 오류시 탐색 이벤트를 사용하는 것보다 나은 솔루션이 있습니다. 더 나은 솔루션은 도메인 클래스에 유효성 검사 규칙을 추가하고 오류 목록에 컨텍스트와 함께 오류를 추가하는 것입니다. 속성 탐색은 상자 밖에서 작동합니다.

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