zoukankan      html  css  js  c++  java
  • WPF控件应用[2]

    原文来自MSDN

    自定义按钮行为

    此时,您已通过编辑按钮模板自定义了该按钮的表示形式,但该按钮并不像典型按钮那样对用户操作做出响应(例如,在鼠标悬停、接收焦点
    和单击时更改外观)。下面两个过程将说明如何将类似这样的行为生成到自定义按钮中。我们将从简单的属性触发器开始,然后添加事件触发
    器和动画。

    设置属性触发器

    1.  创建新的属性触发器 :选择“glassCube”,单击 “触发器”面板中的“+ 属性”
    2. (参见下一步后面的图示)。这样可创建一个默认属性触发器。
    将  IsMouseOver 设置为触发器使用的属性:将该属性更改为  IsMouseOver。这会在  IsMouseOver 属性为  true时(即用户将鼠标指向按钮时)激活此属性触发器。

    3.  IsMouseOver 为 glassCube 触发 100% 的不透明度:您会看到“触发器记录功能处于启用状态”[Trigger recording is on]
    (见上图)。这意味着在记录功能启用的情况下,对“glassCube”属性值所做的任何更改都会成为当  IsMouseOver 为  true 时所执
    行的操作。在记录期间,将“glassCube”现在,您已创建了第一个属性触发器。请注意,编辑器的的 Opacity 更改为 100%。

    现在,您已创建了第一个属性触发器。请注意,编辑器的“触发器”面板记录了 Opacity 已更改为 100%。

    按  F5 运行该应用程序,并将鼠标指针移到该按钮上,然后再移开。您应当会看到当鼠标移到该按钮上时,就会显示玻璃层;而当指针离开时,玻璃层就会消失。

    4.  IsMouseOver 触发笔画值更改 :下面将某些其他操作与  IsMouseOver 触发器关联。在继续记录时,将所选内容从“glassCube”切换为“outerRectangle”。然后,将“outerRectangle”的 Stroke 设置为自定义表达式“{DynamicResource {x:Static SystemColors.HighlightBrushKey}}”。这会将 Stroke 设置为按钮所使用的典型突出显示颜色。按 F5 查看鼠标移到按钮上时的效果。

    5.  IsMouseOver 触发模糊文本 :下面将另一个操作与  IsMouseOver 属性触发器关联。当按钮上面显示玻璃层时,使按钮内容显示
    得有些模糊。为此,可以将模糊的 BitmapEffect 应用于 ContentPresenter (myContentPresenter)。

    注意:若要将“属性”面板返回搜索 BitmapEffect 之前的外观,请从“搜索”框中清除文本。

    此时,我们已对几个关联操作使用了属性触发器,以创建当鼠标指针进入及离开按钮区域时的突出显示行为。按钮的另一个典型行为就
    是在具有焦点时(即被单击时)处于突出显示状态。可通过为  IsFocused 属性添加另一个属性触发器,来添加此类行为。

    6. 为  IsFocused 创建属性触发器 :使用与  IsMouseOver 相同的过程(参见此部分中的第一步),为  IsFocused 属性创建另一个属
    性触发器。当显示“触发器记录功能处于启用状态”[Trigger recording is on]”时,将下列操作添加到该触发器中:
    • “glassCube”获取 100% 的 Opacity。
    • “outerRectangle”获取 Stroke 自定义表达式值“{DynamicResource {x:Static SystemColors.HighlightBrushKey}}”。
    作为本演练的最后一步,我们将向按钮添加动画。这些动画将由事件(具体来说是 MouseEnter 和 Click 事件)触发。
    使用事件触发器和动画增加行为的情趣

    1.  创建 MouseEnter 事件触发器 :添加新的事件触发器,并选择 MouseEnter 作为要在该触发器中使用的事件。

    2.  创建动画时间线:接下来,将动画时间线与 MouseEnter 事件关联。

    按“确定”创建一个新的时间线后,会显示“时间线”面板,同时设计面板上会显示“时间线记录功能处于启用状态”[Timeline recording is on]。这意味着可开始在时间线中记录属性更改(对属性更改进行动画处理)。

    注意:可能需要调整窗口和/或面板大小,才能看到显示效果。

    3.  创建关键帧:要创建动画,请选择要为其设置动画的对象,在时间线上创建两个或更多个关键帧,并为这些关键帧设置要在其间插入动画的属性值。下图将引导您完成创建关键帧的过程。

    4.  在此关键帧处缩小 glassCube:选择第二个关键帧后,使用“大小变换”[Size Transform]将 “glassCube”的大小缩小为其实际大小的 90%。

    按  F5 运行该应用程序。将鼠标指针移到该按钮上。您会看到该按钮上的玻璃层会缩小。

    5.  创建另一个事件触发器并将其与另一个动画关联:下面将再添加一个动画。该过程与用于创建上一事件触发器动画的过程类似:
    a.  使用 Click 事件创建一个新的事件触发器。
    b.  将一个新的时间线与 Click 事件关联。

    c.  在此时间线上,创建两个关键帧,一个位于 0.0 秒,另一个位于 0.3 秒。
    d.  突出显示位于 0.3 秒处的关键帧后,将“旋转变换角度”[Rotate Transform Angle]设置为 360 度。

    结束语

    您已完成了自定义按钮的过程。此过程是通过按钮模板来实现的,该模板会应用于该应用程序中的所有按钮。

     

  • 相关阅读:
    tsung基准测试方法、理解tsung.xml配置文件、tsung统计报告简介
    用指针方式,实现大小写字母户转,数字不变,遇到其他字符则停止转换并输出
    重写strcat函数,以实现strcat的功能
    重写strcpy函数,以实现strcpy的功能
    用指针的方式实现,重写strrchr函数的功能
    求指定整数范围内的素数之和
    求指定整数数组的中位数
    求一个数的阶乘
    LR中变量、参数的使用介绍
    Linux Shell流程例子
  • 原文地址:https://www.cnblogs.com/homezzm/p/1768833.html
Copyright © 2011-2022 走看看