2016-07-06 4 views
0

Ich möchte das nette Workflow-Rendering von dem neu gehosteten Workflow-Designer von .NET 4.5 drucken. Die Standardtechnik zum Drucken von WPF-Steuerelementen funktioniert nicht - man kann die Umgebung des Workflow-Designers selbst sehen, aber das Workflow-Rendering bleibt leer.Drucken .NET WF4-Workflow von rehosted Designer

Ich nehme die Workflow-Definition aus einem anderen Workflow Designer im folgenden Beispiel, aber ich muss in der Lage sein, auch aus einem XAML-String zu drucken (es würde also nicht funktionieren, nur auf den angezeigten Workflow Designer zu vertrauen - ich brauche einen unabhängigen ein).

Ich habe versucht, den folgenden Code:

public void Print() 
{ 
    var printDlg = new PrintDialog(); 

    if (printDlg.ShowDialog() != true) return; 

    _workflowDesigner.Flush(); 

    var wd = new WorkflowDesigner(); 

    DynamicActivity rootActivity; 

    using (var sr = new StringReader(_workflowDesigner.Text)) 
    { 
     rootActivity = (DynamicActivity)ActivityXamlServices.Load(sr); 
    } 

    // wrap the activity in an ActivityBuilder because the designer expects it this way 
    var ab = new ActivityBuilder 
    { 
     Implementation = rootActivity.Implementation?.Invoke(), 
     Name = rootActivity.Name 
    }; 

    wd.Load(ab); 

    var grid = new Grid(); 
    grid.Children.Add(wd.View); 

    printDlg.PrintVisual(grid, "My Workflow"); 
} 

Antwort

0

Sie haben die Designer tatsächlich machen die Aktivität zu machen. Einzelheiten zum Wie und Warum finden Sie unter this MSDN blog. Im Blogeintrag geht es um das Speichern als Bild, aber es gilt das gleiche Konzept. Rendere es zuerst und drucke es dann aus.

+0

Vielen Dank; Ich hoffte, dass es einen anderen Weg gab, anstatt sich auf den Timer zu verlassen, aber es scheint, dass ich diesen Weg hinunter gehen muss. –

Verwandte Themen