zoukankan      html  css  js  c++  java
  • WPF学习笔记-触发器

    一、简单触发器

    可为任何依赖项属性关联简单触发器。例如,可通过响应Control类的IsFocused、IsMouseOver以及IsPressed属性的变化,创建鼠标悬停效果和焦点效果。

     1 <Window x:Class="WPFdemo12.MainWindow"
     2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     6         xmlns:local="clr-namespace:WPFdemo12"
     7         mc:Ignorable="d"
     8         Title="MainWindow" Height="350" Width="525">
     9     <Window.Resources>
    10         <Style x:Key="Style">
    11             <Style.Triggers>
    12                 <Trigger Property="Control.IsFocused" Value="True">
    13                     <Setter Property="Control.Background" Value="Red" />
    14                 </Trigger>
    15             </Style.Triggers>
    16         </Style>
    17     </Window.Resources>
    18     <Grid>
    19         <WrapPanel>
    20             <Button Content="button1" Height="20" Width="500" Margin="3"  Style="{StaticResource Style}"></Button>
    21             <Button Content="button2" Height="20" Width="500" Margin="3"></Button>
    22         </WrapPanel>
    23     </Grid>
    24 </Window>
    View Code

    当触发多个触发器,改同一个属性时,最后一个触发器修改属性有效。

    二、多条件触发器

    有时候触发的条件不止一个,要满足多个时候,就需要多条件触发

     1 <Window x:Class="WPFdemo12.Window1"
     2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     6         xmlns:local="clr-namespace:WPFdemo12"
     7         mc:Ignorable="d"
     8         Title="Window1" Height="300" Width="300">
     9     <Window.Resources>
    10         <Style x:Key="Styled">
    11             <Style.Triggers>
    12 
    13                 <MultiTrigger>
    14                     <MultiTrigger.Conditions>
    15                         <Condition Property="Control.IsFocused" Value="True"/>
    16                         <Condition Property="Control.IsMouseOver" Value="True"/>
    17                     </MultiTrigger.Conditions>
    18                     <MultiTrigger.Setters>
    19                         <Setter Property="Control.Foreground" Value="Red" />
    20                     </MultiTrigger.Setters>
    21                 </MultiTrigger>
    22             </Style.Triggers>
    23         </Style>
    24     </Window.Resources>
    25     <Grid>
    26         <WrapPanel>
    27             <Button Content="button1" Height="20" Width="500" Margin="3"  Style="{StaticResource Styled}"></Button>
    28             <Button Content="button2" Height="20" Width="500" Margin="3"></Button>
    29         </WrapPanel>
    30     </Grid>
    31 </Window>
    View Code

    三,事件触发器

    用于处理动画

     1 <Window x:Class="WPFdemo12.Window2"
     2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     6         xmlns:local="clr-namespace:WPFdemo12"
     7         mc:Ignorable="d"
     8         Title="Window2" Height="300" Width="300">
     9     <Window.Resources>
    10        
    11         <Style TargetType="{x:Type Button}">
    12             <Style.Triggers>
    13                 <!--事件触发器:当 window 加载时,触发-->
    14                 <EventTrigger RoutedEvent="Window.Loaded">
    15                     <EventTrigger.Actions>
    16                         <!--同样的,启动动画并将动画分发给目标对象和属性-->
    17                         <BeginStoryboard>
    18                             <Storyboard>
    19                                 <DoubleAnimation Storyboard.TargetProperty="Width" From="0" To="100" Duration="0:0:5"/>
    20                             </Storyboard>
    21                         </BeginStoryboard>
    22                     </EventTrigger.Actions>
    23                 </EventTrigger>
    24             </Style.Triggers>
    25         </Style>
    26     </Window.Resources>
    27 
    28     <StackPanel Margin="5">
    29         <Button Padding="20" Margin="5" >666666</Button>
    30       
    31     </StackPanel>
    32 </Window>
    View Code

    四,数据触发器

    当绑定数据满足某些条件时,数据触发器执行某些操作。

     1 <Window x:Class="WPFdemo12.Window3"
     2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     6         xmlns:local="clr-namespace:WPFdemo12"
     7         mc:Ignorable="d"
     8         Title="Window3" Height="300" Width="300">
     9     <Window.Resources>
    10 
    11         <Style TargetType="{x:Type Button}">
    12             <Style.Triggers>
    13                 <!--触发条件:当 name 值为 bt 的控件的焦点属性值为 True 时-->
    14                 <DataTrigger Binding="{Binding IsFocused, ElementName=bt}" Value="True">
    15                     <Setter Property="Background" Value="Blue"></Setter>
    16                     <DataTrigger.EnterActions>
    17                         <!--同样的,启动动画并将动画分发给目标对象和属性-->
    18                         <BeginStoryboard>
    19                             <Storyboard>
    20                                 <DoubleAnimation Storyboard.TargetProperty="Width" 
    21                                     From="100" To="500" Duration="0:0:4"/>
    22                             </Storyboard>
    23                         </BeginStoryboard>
    24                     </DataTrigger.EnterActions>
    25                 </DataTrigger>
    26             </Style.Triggers>
    27         </Style>
    28     </Window.Resources>
    29     <Grid>
    30         <Button Name="bt" Content="66666" Margin="30"></Button>
    31     </Grid>
    32 </Window>
    View Code

    多重数据绑定跟多重绑定类似。

  • 相关阅读:
    各种redis的介绍:ServiceStack.Redis,StackExchange.Redis,CSRedis
    nginx 配置web服务
    安装Office Online Server
    买房哪些事?
    微服务演变:微服务架构介绍
    VUE 前端调用Base64加密,后端c#调用Base64解密
    程序员35岁前必须做完的事
    Vue 开发流程
    小程序快速认证
    vue页面打印成pdf
  • 原文地址:https://www.cnblogs.com/anyihen/p/12950675.html
Copyright © 2011-2022 走看看