2016-07-06 64 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

谢谢;我希望有另一种方式,而不是依靠计时器,但似乎我必须沿着这条路线走下去。 –