技术开发 频道

详解WPF中XAML动态工作流的创建

  【IT168 技术文档】我们用.xaml, .cs 或.vb文件建立了工作流。这些文件都会被编译成类后包含在项目程序集中,然后被工作流运行时运行。虽然看上去好像文件的格式无关紧要,其实.xaml文件相比用C#或VB写工作流有独特的优势。

  ·工作流设计器只能基于.xaml文件,所以用C#或VB写的工作流没有设计器支持。

  · XAML可以在不被编译进程序集的情况下动态的被加载和运行。

  打开解决方案

  你可以选择继续使用上一个练习完成后的解决方案,或照一下步骤来开始本练习。

  ·从Start | All Programs | Microsoft Visual Studio 2010 启动Microsoft Visual Studio 2010

  · 打开位于%TrainingKitInstallFolder%\Labs\ IntroToWF\Ex4-CodeActivity\Begin里的初始方案,作为本练习的开始。

  ·按CTRL+SHIFT+B编译整个方案

   1.修改SayHello.xaml文件属性

  在这一步你将修改HelloWorkflow 程序来加载和运行SayHello.xaml文件。然后我们把SayHello.xaml里的text改掉,并在下一次运行程序时观察输出信息的改变。

  (1)我们先要让Visual Studio把SayHello.xaml当作已部署的内容来对待,而不是当成代码。方法如下

  ·在Solution Explorer选择SayHello.xaml,做以下设置

  ·Build Action: Content

  ·Copy To Output Directory: Copy Always

  ·把 Custom Tool 设为 空


Change the properties of SayHello.xaml to treat it as content

  2.修改Main()来加载SayHello.xaml文件

  之前我们的工作流是被编译成一个类的。如果我们要直接从.xaml文件调用工作流,我们必须用ActivityXamlServices 把.xaml文件读进内存并建立一个让WorkflowInvoker可以调用的活动实例。要记住任何我们的.xaml文件引用的程序集在工作流被调用时一定要存在并能使用。

  3.把下列命名空间加入program.cs或Module1.vs文件

  using System.Activities.XamlIntegration;

  Visual Basic

  Imports System.Activities.XamlIntegration

  修改program.cs或Module1.vb去调用ActivityXamlServices,并添加Console.ReadKey的调用,这样能更容易的观察我们的程序在Windows Explorer中的运行。

  static void Main(string[] args)

  {

  WorkflowInvoker.Invoke(ActivityXamlServices.Load(
"SayHello.xaml"));

  Console.ReadKey(
false);

  }

  (Code Snippet
- Introduction to WF4 Lab - ActivityXamlServices VB)

  Visual Basic

  Shared Sub Main()

  WorkflowInvoker.Invoke(ActivityXamlServices.Load(
"SayHello.xaml"))

  Console.ReadKey(False)

  End Sub
0
相关文章