2016-07-06 108 views
0

我想從.NET 4.5的重新主辦的工作流設計人員打印出漂亮的工作流程。打印WPF控件的標準技術不起作用 - 人們可以看到工作流設計器本身的環境,但工作流渲染保持空白。打印重新主辦的設計人員的.NET WF4工作流程

我在下面的例子中從另一個工作流設計器中獲取工作流定義,但我也需要能夠從XAML字符串打印(所以它不會僅僅依靠顯示的工作流設計器工作 - 我需要一個獨立的一)。

我嘗試下面的代碼:

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

回答

0

你必須讓設計者實際呈現的活動。有關詳情,請參閱this MSDN blog。博客條目是關於將圖像保存爲圖像,但同樣的概念適用。先渲染然後打印。

+0

謝謝;我希望有另一種方式,而不是依靠計時器,但似乎我必須沿着這條路線走下去。 –

相關問題