• WPF触发器的使用


    WPF触发器的使用

    WPF中定义了五个触发器类:Trigger、MultiTrigger、DataTrigger、multiDataTrigger、EventTrigger。下面我来介绍一下怎么使用这几个触发器的使用方法。

    Trriger(单一条件的触发器):

    <Page x:Class="StyleTest.Trigger"       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"       xmlns:d="http://schemas.microsoft.com/expression/blend/2008"       mc:Ignorable="d"       d:DesignHeight="300" d:DesignWidth="300"    Title="Trigger">     <Page.Resources>         <Style x:Key="smallText">             <Setter Property="Control.Foreground" Value="blue"/>             <Setter Property="Control.FontSize" Value="20"/>             <Setter Property="Control.FontFamily" Value="Times new Roman"/>             <Setter Property="Control.FontWeight" Value="Bold"/>             <Style.Triggers>                                                           <!--这里使用了触发器,当鼠标移过控件的时候,控件的风格发生改变-->                 <Trigger Property="Control.IsMouseOver" Value="True">                     <Setter Property="Control.Foreground" Value="red"/>                     <Setter Property="Control.FontSize" Value="24"/>                 </Trigger>             </Style.Triggers>         </Style>     </Page.Resources>     <StackPanel>         <TextBlock Style="{StaticResource smallText}">旅望因高尽</TextBlock>         <TextBlock Style="{StaticResource smallText}">乡心遇物悲</TextBlock>         <TextBlock Style="{StaticResource smallText}">故林归宿处</TextBlock>         <TextBlock Style="{StaticResource smallText}">一叶下梧桐</TextBlock>         <Button Style="{StaticResource smallText}">旅思</Button>     </StackPanel> </Page>

    MultiTrigger(多条件的触发器):

    <Page x:Class="StyleTest.Multitrigger"       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"       xmlns:d="http://schemas.microsoft.com/expression/blend/2008"       mc:Ignorable="d"       d:DesignHeight="300" d:DesignWidth="300" Title="Multitrigger">     <Page.Resources>         <Style x:Key="smallText">             <Setter Property="Control.Foreground" Value="blue"/>             <Setter Property="Control.FontSize" Value="20"/>             <Setter Property="Control.FontFamily" Value="Times New Roman"/>             <Setter Property="Control.FontWeight" Value="Bold"/>             <Style.Triggers>                 <Trigger Property="Control.IsMouseOver" Value="True">                     <Setter Property="Control.Foreground" Value="red"/>                 </Trigger>                 <MultiTrigger>                                      <!--定义触发器-->                     <MultiTrigger.Conditions>                         <Condition Property="Control.IsMouseOver" Value="True"/>     <!--通过Condition定义触发条件-->                         <Condition Property="Button.IsPressed" Value="True"/>           <!--通过Condition定义触发条件-->                     </MultiTrigger.Conditions>                     <Setter Property="Control.Foreground" Value="gray"/>                     <Setter Property="Control.FontStyle" Value="Italic"/>                 </MultiTrigger>             </Style.Triggers>         </Style>     </Page.Resources>     <StackPanel>         <Button Style="{StaticResource smallText}">床前明月光</Button>         <Button Style="{StaticResource smallText}">疑是地上霜</Button>         <Button Style="{StaticResource smallText}">举头望明月</Button>         <Button Style="{StaticResource smallText}">低头思故乡</Button>     </StackPanel> </Page>

    DataTrigger(数据触发器):DataTrigger和MultiDataTriffer这一对触发器和Trigger和MultiTrigger非常类似。但是DataTrigger多了一个Binding属性,其语法如下:

    <DataTrigger Binding="{Binding ElementName=控件名,path=空间中的相应属性}" value="相关属性的值">

    如:

    <Page x:Class="StyleTest.DataTrigger"       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"       xmlns:d="http://schemas.microsoft.com/expression/blend/2008"       mc:Ignorable="d"       d:DesignHeight="300" d:DesignWidth="300" Title="DataTrigger">     <Page.Resources>         <Style x:Key="smallText">             <Setter Property="Control.Foreground" Value="Black"/>             <Setter Property="Control.FontSize" Value="24"/>             <Setter Property=" Control.FontFamily" Value="Times New Roman"/>             <Setter Property="Control.FontWeight" Value="Regular"/>             <Style.Triggers>                 <DataTrigger Binding="{Binding ElementName=italicFont, Path=IsChecked}" Value="True">   <!--这里绑定控件的名称,及控件属性-->                     <Setter Property=" Control.FontStyle" Value="Italic"/> <!--当该控件触发该事件的时候,则所有控件的字体样式变为斜体-->                 </DataTrigger>                 <DataTrigger Binding="{Binding ElementName=boldFont, Path=IsChecked}" Value="True">                     <Setter Property="Control.FontStyle" Value="Normal"/>                 </DataTrigger>                 <DataTrigger Binding="{Binding ElementName=redFont, Path=IsChecked}" Value="True">                     <Setter Property=" Control.Foreground" Value="Red"/>                 </DataTrigger>                 <DataTrigger Binding="{Binding ElementName=blueFont, Path=IsChecked}" Value="True">                     <Setter Property="Control.Foreground" Value="Blue"/>                 </DataTrigger>                 <DataTrigger Binding="{Binding ElementName=btnBold, Path=IsPressed}" Value=" True">                     <Setter Property="Control.FontSize" Value="12"/>                 </DataTrigger>             </Style.Triggers>         </Style>        </Page.Resources>     <StackPanel>         <GroupBox>             <Grid>                 <Grid.RowDefinitions>                     <RowDefinition />                     <RowDefinition />                 </Grid.RowDefinitions>                 <Grid.ColumnDefinitions>                     <ColumnDefinition />                     <ColumnDefinition />                 </Grid.ColumnDefinitions>                 <RadioButton Name="italicFont" Grid.Row="0" Grid.Column="0">斜体</RadioButton>                 <RadioButton Name="boldFont" Grid.Row="0" Grid.Column="1">正常</RadioButton>                 <RadioButton Name="redFont" Grid.Row="1" Grid.Column="0">红色</RadioButton>                 <RadioButton Name="blueFont" Grid.Row="1" Grid.Column="1">蓝色</RadioButton>             </Grid>         </GroupBox>         <TextBlock Style="{StaticResource smallText}">床前明月光</TextBlock>         <TextBlock Style="{StaticResource smallText}">疑是地上霜</TextBlock>         <TextBlock Style="{StaticResource smallText}">举头望明月</TextBlock>         <TextBlock Style="{StaticResource smallText}">低头思故乡</TextBlock>         <Button x:Name="btnBold" Style="{StaticResource smallText}">粗体</Button>     </StackPanel> </Page>

  • 相关阅读:
    BUPT复试专题—最长连续等差子数列(2014软院)
    BUPT复试专题—奇偶求和(2014软件)
    BUPT复试专题—网络传输(2014网研)
    Hopscotch(POJ 3050 DFS)
    Backward Digit Sums(POJ 3187)
    Smallest Difference(POJ 2718)
    Meteor Shower(POJ 3669)
    Red and Black(poj 1979 bfs)
    测试
    Equations(hdu 1496 二分查找+各种剪枝)
  • 原文地址:https://www.cnblogs.com/LILING3/p/7346912.html
Copyright © 2020-2023  润新知