国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
Trigger

Trigger分三類:

Property trigger: dependency property改變時觸發(fā)。對應(yīng)的Trigger類。比較Property和Value的值,如果相同,則觸發(fā),如不同不觸發(fā)或撤消更改。常見的例子是用bool值作觸發(fā)條件,但是請記得,只要Property和Value值相同就會觸發(fā),并不一定必須使用如IsMouseOver這樣的bool值。

Data trigger:普通的.net屬性改變時觸發(fā)。對應(yīng)的DataTrigger類。使用 DataTrigger,可以在數(shù)據(jù)對象的屬性值與指定的 Value 匹配時設(shè)置屬性值。例如,在顯示 Employee 對象列表時,可能希望前景色根據(jù)每個 Employee 的當(dāng)前出勤情況而變化。(例如,用紫色前景色顯示當(dāng)前正在休假的 Employee。) 在有些情況下,創(chuàng)建轉(zhuǎn)換器或使用 DataTemplateSelector 可能會更適合。有關(guān)更多信息,請參見 數(shù)據(jù)模板化概述。

Data trigger適用于數(shù)據(jù)綁定的情況。

Event trigger: 由事件觸發(fā)。對應(yīng)的是EventTrigger類。與上面兩個Trigger不一樣的是,Event trigger不會在條件不滿足時撤消操作。

請注意,使用 EventTrigger 時,需要選擇不會影響控件內(nèi)在行為的事件。控件(例如 ButtonTextBox)執(zhí)行有關(guān)用戶輸入事件(如鼠標(biāo)單擊和鍵盤事件)的特定操作。例如,如果要對按鈕進(jìn)行樣式設(shè)置,并嘗試將 MouseDown 事件設(shè)置為 EventTrigger 的 RoutedEvent,則永遠(yuǎn)也不會應(yīng)用 EventTrigger,因為該事件將首先經(jīng)過按鈕的處理??梢愿挠?PreviewMouseDown 事件或其他事件。

由于以上三個Trigger都是繼承自TriggerBase類,所以也都有EnterActionsExitActions屬性,分別記錄Trigger變?yōu)榛顒訝顟B(tài)時及變?yōu)榉腔顒訝顟B(tài)時的TriggerAction 對象的集合,而這兩個屬性是對Event trigger不適用的。

Property trigger:

            <Style x:Key="buttonStyle" TargetType="{x:Type Button}">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="RenderTransform">
                            <Setter.Value>
                                <RotateTransform Angle="10"/>
                            </Setter.Value>
                        </Setter>
                        <Setter Property="Foreground" Value="Black"/>
                    </Trigger>
                </Style.Triggers>
                <Setter Property="FontSize" Value="22"/>
                <Setter Property="Background" Value="Purple"/>
                <Setter Property="Foreground" Value="White"/>
                <Setter Property="Height" Value="50"/>
                <Setter Property="Width" Value="50"/>
                <Setter Property="RenderTransformOrigin" Value=".5,.5"/>
            </Style>

Data trigger:

    <StackPanel Width="200">        <StackPanel.Resources>            <Style TargetType="{x:Type TextBox}">                <Style.Triggers>                    <DataTriggerBinding="{Binding RelativeSource={RelativeSource Self}, Path=Text}"Value="disabled">                        <Setter Property="IsEnabled" Value="False"/>                    </DataTrigger>                </Style.Triggers>                <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=Text}"/>            </Style>        </StackPanel.Resources>        <TextBox Margin="3"/>    </StackPanel>

 

Event Trigger:

<Style TargetType="Rectangle">  <Setter Property="Width" Value="50" />  <Setter Property="Height" Value="50" />  <Setter Property="Margin" Value="20" />  <Setter Property="HorizontalAlignment" Value="Left" />  <Style.Triggers>    <EventTrigger RoutedEvent="MouseEnter">        <BeginStoryboard>            <Storyboard>              <DoubleAnimation To="300" Duration="0:0:1.5"                 AccelerationRatio="0.10" DecelerationRatio="0.25"                 Storyboard.TargetProperty="(Canvas.Width)" />            </Storyboard>        </BeginStoryboard>    </EventTrigger>    <EventTrigger RoutedEvent="MouseLeave">        <BeginStoryboard>            <Storyboard>              <DoubleAnimation Duration="0:0:1.5"                 AccelerationRatio="0.10" DecelerationRatio="0.25"                 Storyboard.TargetProperty="(Canvas.Width)" />            </Storyboard>        </BeginStoryboard>    </EventTrigger>  </Style.Triggers></Style>
 

Trigger中“與”“或”邏輯的表示

“或”邏輯很簡單,只要對同一對象上設(shè)置多個trigger就可以

<Style.Triggers>    <Trigger Property="IsMouseOver" Value="True">        <Setter Property="RenderTransform">        <Setter.Value>             <RotateTransform Angle="10"/>        </Setter.Value>        </Setter>        <Setter Property="Foreground" Value="Black"/>    </Trigger>    <Trigger Property="IsFocused" Value="True">        <Setter Property="RenderTransform">        <Setter.Value>             <RotateTransform Angle="10"/>        </Setter.Value>        </Setter>        <Setter Property="Foreground" Value="Black"/>    </Trigger></Style.Triggers>

“與”操作時,需要用到MultiTrigger和MultiDataTrigger(兩者也都繼承于TriggerBase),兩者的區(qū)別就像Trigger和DataTrigger一樣?!芭c”的判斷是通過Conditions對象來判斷的,只有Conditions中計算出來都為true時才能觸發(fā):
MultiTrigger:

<Style.Triggers>  <Trigger Property="IsEnabled" Value="false">    <Setter Property="Background" Value="#EEEEEE" />  </Trigger>  <MultiTrigger>    <MultiTrigger.Conditions>      <Condition Property="HasItems" Value="false" />      <Condition Property="Width" Value="Auto" />    </MultiTrigger.Conditions>    <Setter Property="MinWidth" Value="120"/>  </MultiTrigger>  <MultiTrigger>    <MultiTrigger.Conditions>      <Condition Property="HasItems" Value="false" />      <Condition Property="Height" Value="Auto" />    </MultiTrigger.Conditions>    <Setter Property="MinHeight" Value="95"/>  </MultiTrigger></Style.Triggers>

 

MultriDataTrigger:

<Window.Resources>  <c:Places x:Key="PlacesData"/>  <Style TargetType="ListBoxItem">    <Style.Triggers>      <DataTrigger Binding="{Binding Path=State}" Value="WA">        <Setter Property="Foreground" Value="Red" />      </DataTrigger>          <MultiDataTrigger>        <MultiDataTrigger.Conditions>          <Condition Binding="{Binding Path=Name}" Value="Portland" />          <Condition Binding="{Binding Path=State}" Value="OR" />        </MultiDataTrigger.Conditions>        <Setter Property="Background" Value="Cyan" />      </MultiDataTrigger>    </Style.Triggers>  </Style>  <DataTemplate DataType="{x:Type c:Place}">    <Canvas Width="160" Height="20">      <TextBlock FontSize="12"             Width="130" Canvas.Left="0" Text="{Binding Path=Name}"/>      <TextBlock FontSize="12" Width="30"                 Canvas.Left="130" Text="{Binding Path=State}"/>    </Canvas>  </DataTemplate></Window.Resources><StackPanel>  <TextBlock FontSize="18" Margin="5" FontWeight="Bold"    HorizontalAlignment="Center">Data Trigger Sample</TextBlock>  <ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew"    ItemsSource="{Binding Source={StaticResource PlacesData}}"/></StackPanel>
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
WPF中觸發(fā)器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger
本文章主要說樣式中事件EventSetter和觸發(fā)器trigger
WPF DataGrid 樣式分享
c# – 在ControlTemplate的DataTrigger中使用時,TemplatedParent為null
水印文本框
WPF listbox 選中效果
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服