技术开发 频道

详解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

  4.验证

  在这次验证过程中,你会先运行HelloWorld程序,然后修改在bin\Debug文件夹下已经部署了的SayHello.xaml文件, 之后我们来看新的文字是否出现在控制台里。

  (1)按CTRL+F5在非调试模式下运行工作流。你的程序应该在控制台里运行,而且输出“Hello Workflow 4”.

  (2)在Bin\Debug目录下找到SayHello.xaml


Locate the SayHello.xaml file in the project’s Bin\Debug directory

  (3)按SayHello.xaml右键菜单,选择Edit在Notepad中打开文件。


Right click and select Edit

  (4)在Notepad中把WriteLine活动的Text属性的值改为“Hello Workflow 4 XAML”, 保存并关闭文件。


Change the Text property in Notepad

  (5)从Windows Explorer运行HelloWorkflow.exe。 现在它应该显示”Hello Workflow4 from XAML”. 随便按个键退出。


HelloWorkflow.exe showing a new message from the .xaml file

  (6)回到Visual Studio, 把之前在SayHello.xaml上改过的设置恢复成初始状态, 这样可以进行之后的练习

  ·Build Action: XamlAppDef

  ·Copy to Output Directory: Do not copy

  ·Custom Tool: MSBuild:Compile


Restore SayHello.xaml to the default properties for .xaml files

  注意!

  在Visual Studio 2010 Beta 2 里有可能找不到XamlAppDef Build Action。 如果你遇到这种情况,右键击中HelloWorkflow 项目,选择Add/New Item, 然后选Workflow/Activity来添加Activity.xaml. 之后XamlAppDef Build Action 就会出现了。

  在Solution Explorer里,选中SayHello.xaml并把它的build action 设为XamlAppDef. 之后你可以从项目中删掉Activity.xaml.

0
相关文章