0

DSL のコンパートメント形状でプロパティを選択する際に問題があります。私がやりたいことは次のとおりです。

1 つのコンパートメントに多くのプロパティを持つ 1 つのコンパートメント形状を持つ 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));
  }
}

問題は、コンパートメントシェイプのプロパティにプレゼンテーションビューがないようです。取得できないためです。

誰かがこの問題で私を助けることができれば、私は嬉しくてとても感謝しています.

よろしくマヌエル

4

1 に答える 1

0

エラーリストからエラーを開きたいと思いました。エラー時にナビゲーション イベントを使用するよりも優れた解決策があります。より良い解決策は、検証ルールをドメイン クラスに追加し、エラーをコンテキストと共にエラー リストに追加することです。プロパティへのナビゲーションはそのまま使用できます。

context.LogError(errorDescription, "GAIN001RuleCompilationError", Field); 
于 2014-03-27T09:32:06.337 に答える