zoukankan      html  css  js  c++  java
  • 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>

     
     
  • 相关阅读:
    model.object对象查询过滤、增删改、Q
    模板中的标签、过滤器
    模板(template)包含与继承
    url用法
    AD用户登录验证,遍历OU(LDAP)
    Python下操作sqlite3
    多线程应用-类(thread)
    数组(list)分组、分段
    多线程应用-函数方式(thread)
    IntelliJ IDEA maven项目 ***
  • 原文地址:https://www.cnblogs.com/Jaasdsa/p/6164749.html
Copyright © 2011-2022 走看看