VS2010 学习笔记 WF4 (4) 使用xaml实现动态工作流
2010-03-28 23:11
405 查看
到目前为止,我们知道可以使用.xaml文件或者使用.cs文件来实现工作流,这些文件将被编译进程序集中。
使用.xaml文件比使用.cs文件有明显的好处:
工作流设计器只识别.xaml文件,使用.cs文件创建的工作流并没有可视化的设计器支持。
.xaml可以在运行时动态加载,无须编译进程序集
动态工作流提供了在运行时才生成业务逻辑,或在运行时才决定加载和运行哪个业务逻辑的可能性。
任务1 – 修改 SayHello.xaml 文件属性
修改 SayHello.xaml文件的属性,使HellowWorkflow程序在运行时才加载和运行SayHello.xaml文件。我们可以手工修改SayHello.xaml文件的内容,并运行程序看看修改后的输出消息是否有所变化。
首先修改SayHello.xaml
文件的属性,使之被VS识别为部署内容,而不是内部代码:
在Solution Explorer选择SayHello.xaml
在属性窗口,修改Build Action为Content
修改Copy To Output Directory为Copy Always
任务 2 – 修改 Main() 方法加载 SayHello.xaml 文件
SayHello.xaml在修改属性前,在编译的时候是作为类型编译到程序集。要从.xaml文件中调用工作流,要使用ActivityXamlServices
类来加载.xaml文件到内存并创建activity实例,便于WorkflowInvoker
能够调用。
在program.cs文件加入System.Activities.XamlIntegration命名空间:
using System.Activities.XamlIntegration;
修改Main()方法,使用ActivityXamlServices
来动态调用.xaml文件。同时加上Console.ReadKey
以便控制台窗口保持显示状态:
static void Main(string[] args)
{
WorkflowInvoker.Invoke(ActivityXamlServices.Load("SayHello.xaml"));
Console.ReadKey(false);
}
验证 - 运行并修改SayHello.xaml文件内容
通过修改发布到bin/Debug目录的SayHello.xaml文件内容,验证可在运行时动态加载工作流。
按CTRL+F5运行项目,程序在控制台输出Hello Workflow 4
通过Windows的资源管理器,定位到项目的Bin/Debug
目录的SayHello.xaml
右键点击文件,并选择Edit
在记事本中,修改WriteLine
activity的Text
属性为Hello Workflow 4 XAML
通过Windows资源管理器,运行HelloWorkflow.exe
,并观察修改后的输出结果是否Hello Workflow 4 from XAML
在VS中,重置SayHello.xaml文件属性:
Build Action: XamlAppDef
Copy to Output Directory: Do not copy
Custom Tool: MSBuild:Compile
使用.xaml文件比使用.cs文件有明显的好处:
工作流设计器只识别.xaml文件,使用.cs文件创建的工作流并没有可视化的设计器支持。
.xaml可以在运行时动态加载,无须编译进程序集
动态工作流提供了在运行时才生成业务逻辑,或在运行时才决定加载和运行哪个业务逻辑的可能性。
任务1 – 修改 SayHello.xaml 文件属性
修改 SayHello.xaml文件的属性,使HellowWorkflow程序在运行时才加载和运行SayHello.xaml文件。我们可以手工修改SayHello.xaml文件的内容,并运行程序看看修改后的输出消息是否有所变化。
首先修改SayHello.xaml
文件的属性,使之被VS识别为部署内容,而不是内部代码:
在Solution Explorer选择SayHello.xaml
在属性窗口,修改Build Action为Content
修改Copy To Output Directory为Copy Always
任务 2 – 修改 Main() 方法加载 SayHello.xaml 文件
SayHello.xaml在修改属性前,在编译的时候是作为类型编译到程序集。要从.xaml文件中调用工作流,要使用ActivityXamlServices
类来加载.xaml文件到内存并创建activity实例,便于WorkflowInvoker
能够调用。
在program.cs文件加入System.Activities.XamlIntegration命名空间:
using System.Activities.XamlIntegration;
修改Main()方法,使用ActivityXamlServices
来动态调用.xaml文件。同时加上Console.ReadKey
以便控制台窗口保持显示状态:
static void Main(string[] args)
{
WorkflowInvoker.Invoke(ActivityXamlServices.Load("SayHello.xaml"));
Console.ReadKey(false);
}
验证 - 运行并修改SayHello.xaml文件内容
通过修改发布到bin/Debug目录的SayHello.xaml文件内容,验证可在运行时动态加载工作流。
按CTRL+F5运行项目,程序在控制台输出Hello Workflow 4
通过Windows的资源管理器,定位到项目的Bin/Debug
目录的SayHello.xaml
右键点击文件,并选择Edit
在记事本中,修改WriteLine
activity的Text
属性为Hello Workflow 4 XAML
通过Windows资源管理器,运行HelloWorkflow.exe
,并观察修改后的输出结果是否Hello Workflow 4 from XAML
在VS中,重置SayHello.xaml文件属性:
Build Action: XamlAppDef
Copy to Output Directory: Do not copy
Custom Tool: MSBuild:Compile
相关文章推荐
- VS2010 学习笔记 WF4 (6) 使用WorkflowApplication启动工作流
- VS2010 学习笔记 WF4 (9) 工作流基础总结
- VS2010 学习笔记 WF4 (5) 加入单元测试,实现测试驱动开发(TDD)
- ITCAST视频-Spring学习笔记(使用Spring配置文件实现AOP)
- Easyui笔记4:实现表格内combobox数据的动态切换(getEditor的使用)
- Easyui笔记4:实现表格内combobox数据的动态切换(getEditor的使用)
- SMP3.0学习笔记之八 使用Kapsel Update插件实现移动应用的自动更新
- Linux内核学习笔记之使用ioctl函数实现用户态命令
- Android(java)学习笔记196:Android中Menu的使用(静态和动态)
- iOS学习笔记20-通过AirServer使用AirPlay镜像并实现多屏幕显示控制
- 【Java EE 学习 75 下】【数据采集系统第七天】【二进制运算实现权限管理】【使用反射初始化权限表】【权限捕获拦截器动态添加权限】
- 【学习笔记】使用vue2实现购物车和地址选配功能
- wince驱动学习笔记(vs2005实现流驱动动态加载与卸载 2)
- Mybatis学习笔记七:动态SQL语句的使用
- 学习笔记之cocos2d-x2.1.1实现读取.plist文件(使用数组CCArray)
- JSP基础实例_Java动态实现课程表_学习笔记
- 大数据学习笔记:在eclipse上使用Ant插件实现自动编译打包
- CSS学习笔记:使用绝对定位实现横向两列布局
- OpenLayers学习笔记6——使用jQuery UI实现查询并标注(功能实现篇)
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证