位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 创建控件并设置样式 — 触发器

提问人:刘团圆发布时间:2020-12-09

    WPF中的事件几乎无所不包,例如按钮单击、应用程序启动和关闭事件等。实际上,WPF有几类触发器(Trigger),它们均继承自TriggerBase基类。例如EventTrigger触发器类就包含了一系列操作,每个操作都是一个派生自TriggerAction基类的对象。激活触发器时,就会执行相应的操作。

    可借助EventTrigger,调用BeginStoryboard操作来触发动画,调用ControllableStoryboardAction来操作故事板(storyboard),或者调用SoundPlayerAction来触发声音效果。

    每个控件都有Triggers属性,它可用于直接在该控件上定义触发器。还可以沿着层次结构向上定义触发器,例如在前面演示的Window对象上。设置控件的样式时,最常用的触发器类型是Trigger(但仍使用EventTrigger 触发控件动画)。Trigger类用于设置属性,来响应其他属性的改变,在Style对象中使用时的效果尤其好。

    触发器对象的配置如下:

        •要定义Trigger对象监视的属性,应使用TriggenProperty属性。

        •要定义何时激活Trigger对象,应设置Trigger.Value属性。

        •要定义Trigger触发的操作,应将Trigger.Setters属性设置为Setter对象的一个集合。

这里所指的Setter对象就是前面介绍的Setter对象。

下面的代码显示了在Style对象中用到一个触发器:

<Style TargetType="Button">

  <Style.Triggers>

    <Trigger Property="IsMouseOver" Value="true">

      <Setter Property="Foreground" Value="Yellow" />

    </Trigger>

  </Style.Triggers>

</Style>

    上述代码在 Button.IsMouseOver 属性为 true 时,将 Button 控件的 Foreground 属性设置为 Yellow。IsMouseOver 是一个非常有用的属性,可在查找控件信息或控件状态时用作快捷键。顾名思义,如果鼠标指针位于某个控件之上,则该属性为true。这样就可以为鼠标滚轮编写代码。与其类似的属性包括IsFocused,用于确定控件是否获得了焦点;IsHitTestVisible表示是否可以单击该控件(即控件没有被上层堆叠的控件盖住);lspressed表示某个按钮是否被按下。最后这个属性仅适用于继承自ButtonBase的按钮,其他属性则适用于所有控件。

    还可以借助ControlTemplateTriggers属性来实现更多功能,创建包含触发器的控件模板。默认的Button模板就采用这种方式响应鼠标滚轮滚动、单击和焦点切换。只有修改模板,才能实现自己的功能。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部