`

坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)

阅读更多

[置顶]坚持学习WF文章索引

活动(Activity)

活动是工作流的基本单元,每个工作流都会包含若干活动,并且会按一定的逻辑执行。WF中有两种类型一种是简单活动,另一种是复合活动,WF提供了一组标准活动库,当然你也可以自定义活动。所有的活动都继承自Activity类,下面是WF中最基本的活动的类的层次图:

activityclass

 

下面是WF提供的标准活动,具体是干什么的我就不写了,具体可以查阅MSDN,而且以后也会写到

Flow Execution Events Web Services State
IfElse TransactionScope EventDriven WebServiceInput SetState
While Sequence Listen WebServiceOutput State
CAG Compensate HandleExternalEvent WebServiceFault StateInitialization
Policy SynchronizationScope EventHandlingScope InvokeWebService StateFinalization
Replicator Code Delay    
Throw Parallel      
Suspend InvokeWorkflow     WCF
Terminate CallExternalMethod     ReceiveActivity
FaultHandler CompensatableSequence     SendActivity
 

CompensatableTransaction

Scope

     

 

依赖属性(DependencyObject)

依赖属性是WF中提供的一种特殊类型的属性,有三种类型的依赖属性:实例属性、元属性和附加属性。

元属性:元数据属性的值必须在设计时指定,并且在运行时不可以更改.这样我们就不可以绑定元数据属性,元数据属性是通过指定 Metadata 选项来实现的。

实例属性:可以利用活动数据绑定来设置值,无论在设计时还是运行时.可以为该属性分配 ActivityBind 而不是实际值。

附加属性:我们可以为任何从DependencyObject继承而来的对象附加一个依赖属性.也就是说,我们可以在运行时使用自定义属性来扩展所有的Windows Workflow活动.假如父活动需要为每个子活动追加信息,那么就会使用到附加属性.WF提供的标准活动就有一个典型的例子:ConditionedActivityGroup活动.它可以有条件的执行一个或多个子活动,因为它将When条件追加到了每一个子活动之上.在工作流设计器中,CAG的每个子活动都显示有自己的When属性。

据说在WPF里也有依赖属性这东西,不过在System.Windows命名空间下,而WF中在 System.Workflow.ComponenModuel中,概念是一样的,但是不能互通。

只有继承System.Workflow.ComponentModel.DependencyObject的类才能应用定义DependencyProperty,要定义DependencyProperty,要使用System.Workflow.ComponentModel.DependencyProperty的静态方式注册属性,下面就来定义一个依赖属性。

public static DependencyProperty NameToPrintProperty = DependencyProperty.Register("NameToPrint"typeof(System.String), typeof(CustomActivity)); 

        [DescriptionAttribute(
"String to be passed to the custom activity")] 
        [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)] 
        [BrowsableAttribute(
true)] 
        
public string NameToPrint 
        { 
            
get 
            { 
                
return ((String)(base.GetValue(CustomActivity.NameToPrintProperty))); 
            } 
            
set 
            { 
                
base.SetValue(CustomActivity.NameToPrintProperty, value); 
            } 
        }


注意:

静态的从属属性与注册的从属属性名的格式必须是: [名Property] 与 [名] 的格式,如:

Eg1Property = DependencyProperty.Register("Eg1",
Eg1Property 
= DependencyProperty.Register("Eg2"


这个依赖属性可以绑定到工作流的属性中,当然活动属性也可以绑定到其他活动属性。被绑定的属性可以是依赖属性,也可以是.Net里正常属性。如下图所示:

2

 

你要觉得这个代码很复杂,很多的话你可以使用代码段来实现,如下图:

1

 

DependencyProperty事件
1.DependencyProperty事件本质上与DependencyProperty从属属性一样
2.AddHandler、RemoveHandler 通过从属属性添加、移除事件定阅
3.定义一个有DependencyProperty事件   
       

 public static DependencyProperty BeCareEvent = DependencyProperty.Register("BeCare"typeof(EventHandler), typeof(Activity1)); 

        
//定义事件 
        public event EventHandler EA 
        { 
            add 
            { 
                
base.AddHandler(Activity1.BeCare, value); 
            } 
            remove 
            { 
                
base.RemoveHandler(Activity1.BeCare, value); 
            } 
        } 
    } 


4.关于DependencyProperty属性和DependencyProperty事件的可运行代码,我会在下一次的自定义活动中来体现。

上一篇:坚持学习WF(3):WF框架概览
下一篇:坚持学习WF(5):自定义活动(CustomActivity)

分享到:
评论

相关推荐

    WF教程_坚持学习WF

    坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty) 坚持学习WF(5):自定义活动(CustomActivity) 4.5两篇对主要对活动(Actibity)的介绍和依赖属性(DependencyObject)和DependencyProperty事件的使用。 ...

    WPF依赖属性DependencyProperty范例Demo

    WPF 依赖属性 DependencyProperty C# WPF 依赖属性 DependencyProperty C# WPF 依赖属性 DependencyProperty C# WPF 依赖属性 DependencyProperty C#

    坚持学习WF,WF学习教程

    坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty) 坚持学习WF(5):自定义活动(CustomActivity) 4.5两篇对主要对活动(Actibity)的介绍和依赖属性(DependencyObject)和DependencyProperty事件的使用。 ...

    坚持学习WF

    坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty) 坚持学习WF(5):自定义活动(CustomActivity) 4.5两篇对主要对活动(Actibity)的介绍和依赖属性(DependencyObject)和DependencyProperty事件的使用。...

    WPF 依赖属性依赖属性依赖属性依赖属性

    4. **数据绑定**:依赖属性可以与数据绑定结合,将控件的属性值与数据源中的值绑定在一起。当数据源的值改变时,视图会自动更新;反之亦然。 5. **元数据**:每个依赖属性都有元数据,可以存储关于属性的信息,如...

    依赖属性学习代码(进价1)

    在本文中,我们将深入探讨依赖属性的学习,特别是作为进阶篇的内容,这将帮助开发者更好地理解和运用这个强大的工具。 依赖属性在WPF中的核心地位主要体现在以下几点: 1. **数据绑定**:依赖属性是WPF数据绑定的...

    依赖属性实现绑定

    创建依赖属性通常需要通过`DependencyProperty.Register`静态方法注册,并提供属性的元数据(metadata),如默认值、属性变更回调等。 2. **控件定义依赖属性** 控件可以通过定义依赖属性来扩展其功能。例如,一个...

    用Visual Studio 2017 C# WPF DependencyProperty实现依赖属性演示程序

    在本文中,我们将深入探讨如何使用Visual Studio 2017、C#和WPF(Windows Presentation Foundation)的DependencyProperty来实现依赖属性。DependencyProperty是WPF框架中的一个核心概念,它允许UI元素和数据之间...

    WPF依赖项属性示例

    **WPF依赖项属性详解与示例** 在Windows Presentation Foundation(WPF)中,依赖项属性...通过对`Dp_Project`的深入学习和实践,开发者可以更熟练地掌握WPF依赖项属性的使用,提升WPF应用开发的效率和灵活性。

    自己平时练手的代码,依赖属性和路由事件

    在IT行业中,依赖属性(Dependency Property)是一种在WPF(Windows Presentation Foundation)和UWP(Universal Windows Platform)框架中广泛使用的特性,它允许组件之间共享数据并实现动态更新。依赖属性提供了一...

    WPF源码:只读依赖属性.rar

    在Windows Presentation Foundation (WPF) 中,依赖属性是框架的核心特性之一,用于实现数据绑定、属性更改通知和其他高级UI功能。这个压缩包“WPF源码:只读依赖属性.rar”很可能包含一个示例项目,演示了如何创建...

    依赖属性Demo

    - 首先,使用`DependencyProperty.Register`静态方法在类级别上注册一个新的依赖属性,指定属性名、数据类型、默认值和回调函数。 - 其次,为了提供一个方便的getter和setter,可以创建一个常规的.NET属性,它封装...

    依赖属性学习代码

    依赖属性是WPF(Windows Presentation Foundation)框架中的一个重要特性,它允许控件和其他UI元素的属性之间建立直接的依赖关系,使得属性值的更改能够自动传播到相关联的组件。这个概念是WPF数据绑定和MVVM(Model...

    事件通知与依赖属性对比实例.zip

    开发者可以通过`DependencyProperty.Register`方法注册自定义的依赖属性,并使用`Binding`表达式将其与数据源绑定。 依赖属性的优势: 1. 支持属性值的观察和变更通知。 2. 提供属性值的验证和默认值设置。 3. 支持...

    WPF源码:依赖属性回调、验证及强制值.rar

    依赖属性是WPF中数据绑定和属性系统的基础,允许对象之间的属性绑定和通知机制。创建依赖属性通常涉及以下步骤: - 使用`DependencyProperty.Register`静态方法注册新属性,定义其类型、默认值和元数据。 - 在类中...

    WPF入门-02依赖属性(附c#代码)

    1.依赖属性主要有以下三个优点: .依赖属性加入了属性变化通知、限制、验证等...4)提供一个依赖属性的包装属性Name,通过这个属性来完成对依赖属性的读写操作。 5)在画面可以通过如下方式来绑定依赖属性Name ,Relative

    wpf用户组件创建依赖属性demo

    通过学习和实践这个示例,你可以深入了解WPF的依赖属性,从而提高自定义控件的开发效率和灵活性,更好地利用WPF的强大功能。对于任何希望深入WPF开发的程序员来说,理解和掌握依赖属性都是必不可少的技能。

    DependencyObject和DependencyProperty源码

    在.NET Framework和WPF(Windows Presentation Foundation)中,`DependencyObject`和`DependencyProperty`是两个核心类,它们为UI元素提供了数据绑定、属性继承、动画等特性。这两个类是WPF框架的基础,理解它们的...

    MVVM Usercontrol 依赖属性 前台后台双向数据绑定

    4. 在主视图的XAML中,将视图模型的属性绑定到UserControl的依赖属性,设置Binding Mode为TwoWay。 通过以上步骤,你就可以创建一个具有双向数据绑定的MVVM Usercontrol。这种方式极大地提高了开发效率,减少了代码...

    C# WPF DependencyProperty程序

    在创建一个新的依赖属性时,我们需要调用DependencyProperty.Register方法,提供属性名、属性类型、默认值和回调函数。回调函数(PropertyChangedCallback)在属性值改变时被调用,可以用来执行自定义逻辑。 例如,...

Global site tag (gtag.js) - Google Analytics