您好,欢迎访问三七文档
WPF中触发器的简单总结谭亮亮Contents1.触发器的定义2.触发器的作用3.触发器的简单分类4.一个小实例What•顾名思义,触发器(Trigger)就是当某种条件满足后即完成相应逻辑功能的一部分程序组成。•触发器,从某种意义上来说它也是一种Style,因为它包含有一个Setter集合,并根据一个或多个条件执行Setter中的属性改变。因为复用的缘故,Styles是放置触发器的最好位置。但对于每个FrameworkElement来说都有Triggers集合,也可以放Triggers集合里。Why为什么要使用触发器?触发器有什么用?思考:假如软件开发人员正在编写一个用户注册系统,该系统要求用户输入自己的用户名并重复输入两次密码完成对该用户名的注册。而且该系统的主要特色就是当用户重复输入密码发生错误的时候,第二个密码输入框的边框将显示为红色。我们该怎么做?Why软件开发人员需要使用一个函数侦听TextBox的TextChanged消息。在两个密码框中的字符并不是包含关系的时候,该消息的处理函数会将第二个消息框的边框设置为红色。也就是说,在了解触发器之前,该功能需要在C#代码中实现。实际上,这只是一个界面上的功能,而与后台程序的业务逻辑完全没有关系。因此软件开发人员需要在XAML中使用一种方法完成该功能。这个方法就是使用触发器。WPF触发器的功能:尽可能扩展XAML声明代码,不依赖于后台代码。CycleDiagram在WPF中,Trigger主要分为三种类型,它们分别是:(1)属性触发器:其对应的类是Trigger。它在特定关联属性发生变化时被触发。(2)数据触发器:其对应的类是DataTrigger。它在特定的CLR类型所记录的值发生变化时被触发。(3)事件触发器:其对应的类是EventTrigger。它将在特定的路由事件发生时被触发。属性触发器(PropertyTrigger)属性触发器是在当某个依赖属性的值发生变化时触发执行一个Setter的集合,当属性失去这个值时,这些被触发执行的Setter集合会自动被撤销例如:注意,属性触发器是用Trigger标识的StyleTargetType=ListBoxItemSetterProperty=OpacityValue=0.5/SetterProperty=MaxHeightValue=75/Style.Triggers!--表示在ListBoxItem的IsSelected属性变为True的时候--TriggerProperty=IsSelectedValue=TrueTrigger.Setters!--其另外一个属性Opacity的值变为1.0--SetterProperty=OpacityValue=1.0//Trigger.Setters/Trigger/Style.Triggers/Style数据触发器(DataTrigger)数据触发器和属性触发器除了面对的对象类型不一样外完全相同。数据触发器是来检测非依赖属性------也就是用户自定义的.NET属性-----的值发生变化时来触发并调用符合条件的一系列Setter集合。例如:StackPanel.ResourcesStylex:Key=textBoxStyleTargetType={x:TypeTextBox}Style.Triggers!--当文本框值为disabled时,设置文本框不可用--DataTriggerBinding={BindingRelativeSource={RelativeSourceSelf},Path=Text}Value=disabledSetterProperty=IsEnabledValue=False//DataTrigger/Style.Triggers!--用输入值设置文本框背景色--SetterProperty=BackgroundValue={BindingRelativeSource={RelativeSourceSelf},Path=Text}//Style/StackPanel.Resources事件触发器(EventTrigger)WPF事件触发器的作用就是用来触发一个事件的时候可以调用触发器进行相关的操作,以达到开发人员的目的。例如:StackPanel.ResourcesStylex:Key=textBoxStyle2TargetType={x:TypeTextBox}Style.Triggers!--逻辑或,当鼠标经过或获取焦点,设置前景色为红--TriggerProperty=IsMouseOverValue=TrueSetterProperty=ForegroundValue=Red//TriggerTriggerProperty=IsFocusedValue=TrueSetterProperty=ForegroundValue=Red//Trigger!--Trigger变体--MultiTrigger!--逻辑且,当鼠标经过且获取焦点,设置背景色为绿--MultiTrigger.ConditionsConditionProperty=IsMouseOverValue=True/ConditionProperty=IsFocusedValue=True//MultiTrigger.ConditionsSetterProperty=BackgroundValue=Green//MultiTrigger/Style.Triggers/Style/StackPanel.ResourcesDiagramConceptAddYourTextTextTextTextTextTextTextDiagramAddYourTextAddYourTextAddYourTextAddYourTextAddYourTextAddYourTextAddYourTextAddYourTextDiagramAddYourTextAddYourTextAddYourTextAddYourTitleTableConceptConceptconceptConceptDiagramTextTextTextTextAddYourTitleCycleDiagramConceptBECDAAddYourTextAddYourTextAddYourTextAddYourTextAddYourTextDiagram1ThemeGalleryisaDesignDigitalContent&ContentsmalldevelopedbyGuildDesignInc.2ThemeGalleryisaDesignDigitalContent&ContentsmalldevelopedbyGuildDesignInc.3ThemeGalleryisaDesignDigitalContent&ContentsmalldevelopedbyGuildDesignInc.Diagram2001200220032004DiagramAddYourTexthereATitleAddYourTexthereCTitleAddYourTexthereBTitleDiagramAddYourTitleAddYourTitleAddYourTitleThemeGalleryisaDesignDigitalContent&ContentsmalldevelopedbyGuildDesignInc.ThemeGalleryisaDesignDigitalContent&ContentsmalldevelopedbyGuildDesignInc.ThemeGalleryisaDesignDigitalContent&ContentsmalldevelopedbyGuildDesignInc.TableTitleTitleTitleTitleTitleTitleOOOOOTitleOOOOOTitleOOOOOTitleOOOOOTitleOOOOOTitleOXOXOMarketingDiagram27.49038.634.646.94520022003EastWestNorth27.49027.438.634.638.646.94546.9200220032002EastWestNorthBlockDiagramAddYourTextAddYourTextconceptConceptConceptConcept
本文标题:65触发器
链接地址:https://www.777doc.com/doc-3396112 .html