1

두 활동 (둘 사이에 존재했던)이 삭제 된 후에 두 활동 간의 연결을 다시 설정하는 데 성공했습니다.WF4 새로 고침 워크 플로 디자이너

  if (containerAsFlowchart != null) 
     { 
      for (int i = 0; i < containerAsFlowchart.Nodes.Count; i++) 
      { 
       if (containerAsFlowchart.Nodes[i] is FlowStep) 
       { 
        FlowStep fs = containerAsFlowchart.Nodes[i] as FlowStep; 

        if (fs.Next == null) 
        { 
         if (i < containerAsFlowchart.Nodes.Count - 1) 
         { 
          fs.Next = (FlowNode)((containerAsFlowchart.Nodes[i + 1] as FlowStep)); 
         } 
        } 

       } 

      } 
     } 

알은 지금까지는 제대로 작동하지만 연결이 다시 설정 되더라도 워크 플로 디자이너에서 시각화 할 수 없습니다. 늘리거나 붕괴, 또는 워크 플로우를 새로 고치는 다른 작업, 그 예쁜 화살표가 거기에 있지만 .. 프로그래밍 방식으로이 일을 할 수있는 방법이 있고 하나의 작업을 삭제 한 후이 다시 그리기를 트리거 할?

답변

1

변경 사항을 디자이너가 직접 볼 수있게하려면 ModelItem을 직접 편집해야합니다. 아래 간단한에 무엇을 ModelItem

modelItem.Properties["DisplayName"].Value = "New Name"; 

복잡한 유형에서, 불가지론 모델 구조의 워크 플로우의 모든 부분을 유지하는 것입니다 :

var modelItem = Designer.Context.Services.GetService<ModelService>().Root; 

// Do changes through modelItem ... 

예를 들어, 루트 활동의 표시 이름을 변경하려면 정수. 이 모델은 디자이너 자체가 워크 플로를 화면에 인쇄하는 데 사용됩니다 (인수, 변수 등을 읽음).

자세히 알아 보려면 디버거를 사용하고 모델을 살펴보십시오.

+0

답변 해 주셔서 감사합니다. 이 경우에도 표시 이름을 변경하려고했습니다. 실제로 ModelChanged 이벤트가 발생하지만 디자이너 레이아웃은 업데이트되지 않습니다. 내가 본 것은 나무를 탐색 할 때 업데이트되며, 흐름도를 확장하거나 축소하면 더 간결 해집니다. –

+1

OK, 정말 고마워요. 네가 나에게 한 말을 오해했다. 그건 완벽하게 작동합니다. 내 FowStep을위한 ModelItem을 얻고 .Properties [ "Next"]를 호출합니다. SetValue ((FlowNode) ((FlowAsep로 containerAsFlowchart.Nodes [i + 1])))); 더 많은 질문이 있습니다. 모델 항목을 얻는 데 어려움이 있습니다. 먼저 ModelService.Find로 검색하고 워크 플로 디자이너에서 FlowSteps를 모두 가져오고 해당 컬렉션을 반복하여 일치하는 이름을 검색 한 후에야합니다. 거기에 더 간단한 방법? –

관련 문제