zoukankan      html  css  js  c++  java
  • WPF中样式中事件处理


    之前有个文章是说样式的设置问题,可以参考这个    wpf中的样式

    本文章主要说样式中事件EventSetter和触发器trigger

    1.EventSetter
    EventSetter这个理解比较简单,就是给样式使用者添加一个事件,比如给按钮添加点击事件,提供了另外一个方式来给控件添加事件
    比如这个style
     <Style TargetType="Button">
                    <Setter Property="FontSize" Value="40"></Setter>
                    <EventSetter  Event="Click" Handler="xx"></EventSetter>
                </Style>
    定义了一个button的style,设置字体大小
    EventSetter  就是事件设置,event表示是什么事件,handler表示该事件关联哪个方法
    这样的话就是说本window内的所有button都有有点击事件交给xx方法来处理

    2.trigger触发器

    trigger这个也是style的属性之一,触发器顾名思义就是在使用style样式的元素或者控件的某些属性发生变化的时候才会触发这个事件
    trigger就定义了元素或者控件如何响应特点属性发生变化时候进行处理,比如用户输入等等,鼠标移动
    典型的trigger这样定义
     <Style TargetType="Button">
                    <Setter Property="FontSize" Value="40"></Setter>
                    <EventSetter  Event="Click" Handler="xx"></EventSetter>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter Property="FontSize" Value="20"></Setter>
                            <Setter Property="Foreground" Value="blue"></Setter>
                        </Trigger>
                    </Style.Triggers>
                </Style>
    trigger仍在在style中定义。这个定义表示,当button有IsMouseOver的这个属性变化成True的时候,会开始对他的fontsize和foreground的属性发生变化
    通过运行vs就会发现,鼠标在button上停留的时候button的字体大小会变小而且颜色会变蓝色,鼠标离开以后就会恢复回来

    3.MultiTrigger
    多触发器,这个意思是说只有在两个或者两个以上的属性发生变化的时候才会引发触发器,不像之前的例子一个属性变化就会引发触发器
    典型语法,仍然在style中
    <style>
     <Style.Triggers>
     <MultiTrigger>
                            <MultiTrigger.Conditions>//罗利条件,条件的集合,
                                <Condition Property="IsPressed" Value="true"></Condition>
                                <Condition Property="IsMouseOver" Value="true"></Condition>
                            </MultiTrigger.Conditions>
                            <Setter Property="FontStyle" Value="Italic"></Setter>//在以上条件下才发生的属性变化
                        </MultiTrigger>
    </ <Style.Triggers>>
    </style>

    4.datatrigger

    数据触发和trigger类似,不同的是 binding代替了property属性
    <style>
    < Style.Triggers>
    <DataTrigger Binding="{Binding ElementName=tb,Path=Text.Length}" Value="0">
                            <Setter Property="IsEnabled" Value="false"></Setter>
                        </DataTrigger>
     </Style.Triggers>
    </style>
    这个绑定设置到了一个textbox文本控件,如果textbox控件内容为空的时候,就会引发按钮isenabled=false
    当然默认启动的时候textbox内容就是为空,所以初始化的时候按钮的isenabled=false,只有文本框内容输入内容的时候按钮的isenabled才等true

    此外还有一个MultiDataTrigger,可以参考3,其实一样的


    本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

  • 相关阅读:
    BZOJ 3150 [Ctsc2013]猴子 ——期望DP 高斯消元
    BZOJ 4569 [Scoi2016]萌萌哒 ——ST表 并查集
    BZOJ 4590 [Shoi2015]自动刷题机 ——二分答案
    BZOJ 3462 DZY Loves Math II ——动态规划 组合数
    BZOJ 4827 [Shoi2017]分手是祝愿 ——期望DP
    BZOJ 4827 [Hnoi2017]礼物 ——FFT
    BZOJ 4826 [Hnoi2017]影魔 ——扫描线 单调栈
    ZOJ 3874 Permutation Graph ——分治 NTT
    UVA 12633 Super Rooks on Chessboard ——FFT
    HDU 2065 "红色病毒"问题 ——快速幂 生成函数
  • 原文地址:https://www.cnblogs.com/zjypp/p/2319316.html
Copyright © 2011-2022 走看看