码迷,mamicode.com
首页 > Windows程序 > 详细

深入浅出WPF--笔记(2015.04.20)

时间:2015-04-21 01:57:22      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:wpf trigger

    构成Style最重要的两种元素是Setter和Trigger,Setter类帮助设置控件的静态外观风格,Trigger类帮助设置控件的行为风格。

    Setter类的Property属性用来指明想为目标的哪个属性赋值;Setter类的Value属性则是提供的属性值。

    使用{x:Null}可以显示地清空Style。示例如下:

XAML代码:

<Window x:Class="MyTestWpfApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyTestWpfApplication"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"       
        xmlns:c="clr-namespace:System.Collections;assembly=mscorlib"
        Title="WPF" Height="132" Width="300" WindowStartupLocation="CenterScreen">
    <Window.Resources>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Setters>
                <Setter Property="FontSize" Value="24"/>
                <Setter Property="TextDecorations" Value="Underline"/>
                <Setter Property="FontStyle" Value="Italic"/>
            </Style.Setters>
        </Style>
    </Window.Resources>
    <StackPanel Margin="5">
        <TextBlock Text="Hello WPF"/>
        <TextBlock Text="This is a sample for Style!"/>
        <TextBlock Text="by tim 2009.12.23" Style="{x:Null}"/>
    </StackPanel>
</Window>

其中的<Style.Setters></Style.Setter>可以省略而直接写中间部分。

    如果想设置控件的ControlTempalte,只需要把Setter的Property设为Template并为Value提供一个ControlTemplate对象即可。

===============================================================

    Trigger,触发器,即当某些条件满足时会触发一个行为。有事件触发型的EventTrigger,数据变化触发型的Trigger/DataTrigger,多条件触发型的MultiTrigger/MultiDataTrigger等。

    Trigger也有Property和Value这两个属性。Property属性是Trigger关注的属性名称,Value是触发条件。Trigger类还有一个Setters属性,此属性值是一组Setter,一旦触发条件满足,这组Setter的“属性-值”就会被应用,触发条件不再满足后,各属性值就会被还原。示例如下:

XAML代码:

<Window x:Class="MyTestWpfApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyTestWpfApplication"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"       
        xmlns:c="clr-namespace:System.Collections;assembly=mscorlib"
        Title="WPF" Height="130" Width="300" WindowStartupLocation="CenterScreen">
    <Window.Resources>
        <Style TargetType="CheckBox">
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="true">
                    <Trigger.Setters>
                        <Setter Property="FontSize" Value="20"/>
                        <Setter Property="Foreground" Value="Orange"/>
                    </Trigger.Setters>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <StackPanel>
        <CheckBox Content="悄悄的我走了" Margin="5"/>
        <CheckBox Content="正如我悄悄的来" Margin="5"/>
        <CheckBox Content="我挥一挥衣袖" Margin="5"/>
        <CheckBox Content="不带走一片云彩" Margin="5"/>
    </StackPanel>
</Window>

=========================================================================

    MultiTrigger必须多个条件同时成立时才会被触发。MultiTrigger比Trigger多了一个Conditions属性,需同时成立的条件就存储在这个集合中。示例如下:

XAML代码:

<Window x:Class="MyTestWpfApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyTestWpfApplication"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"       
        xmlns:c="clr-namespace:System.Collections;assembly=mscorlib"
        Title="WPF" Height="130" Width="300" WindowStartupLocation="CenterScreen">
    <Window.Resources>
        <Style TargetType="CheckBox">
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsChecked" Value="true"/>
                        <Condition Property="Content" Value="正如我悄悄的来"/>
                    </MultiTrigger.Conditions>
                    <MultiTrigger.Setters>
                        <Setter Property="FontSize" Value="20"/>
                        <Setter Property="Foreground" Value="Orange"/>
                    </MultiTrigger.Setters>
                </MultiTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <StackPanel>
        <CheckBox Content="悄悄的我走了" Margin="5"/>
        <CheckBox Content="正如我悄悄的来" Margin="5"/>
        <CheckBox Content="我挥一挥衣袖" Margin="5"/>
        <CheckBox Content="不带走一片云彩" Margin="5"/>
    </StackPanel>
</Window>

本文出自 “墨池小样儿” 博客,请务必保留此出处http://306702895.blog.51cto.com/8366753/1636289

深入浅出WPF--笔记(2015.04.20)

标签:wpf trigger

原文地址:http://306702895.blog.51cto.com/8366753/1636289

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!