乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Trigger

       悟靜 2013-01-01

      Trigger分三類(lèi):

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

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

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

      Event trigger: 由事件觸發(fā)。對(duì)應(yīng)的是EventTrigger類(lèi)。與上面兩個(gè)Trigger不一樣的是,Event trigger不會(huì)在條件不滿(mǎn)足時(shí)撤消操作。

      請(qǐng)注意,使用 EventTrigger 時(shí),需要選擇不會(huì)影響控件內(nèi)在行為的事件??丶ɡ?ButtonTextBox)執(zhí)行有關(guān)用戶(hù)輸入事件(如鼠標(biāo)單擊和鍵盤(pán)事件)的特定操作。例如,如果要對(duì)按鈕進(jìn)行樣式設(shè)置,并嘗試將 MouseDown 事件設(shè)置為 EventTrigger 的 RoutedEvent,則永遠(yuǎn)也不會(huì)應(yīng)用 EventTrigger,因?yàn)樵撌录⑹紫冉?jīng)過(guò)按鈕的處理??梢愿挠?PreviewMouseDown 事件或其他事件。

      由于以上三個(gè)Trigger都是繼承自TriggerBase類(lèi),所以也都有EnterActionsExitActions屬性,分別記錄Trigger變?yōu)榛顒?dòng)狀態(tài)時(shí)及變?yōu)榉腔顒?dòng)狀態(tài)時(shí)的TriggerAction 對(duì)象的集合,而這兩個(gè)屬性是對(duì)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>
                          <DataTrigger
      Binding="{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中“與”“或”邏輯的表示

      “或”邏輯很簡(jiǎn)單,只要對(duì)同一對(duì)象上設(shè)置多個(gè)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>

      “與”操作時(shí),需要用到MultiTrigger和MultiDataTrigger(兩者也都繼承于TriggerBase),兩者的區(qū)別就像Trigger和DataTrigger一樣?!芭c”的判斷是通過(guò)Conditions對(duì)象來(lái)判斷的,只有Conditions中計(jì)算出來(lái)都為true時(shí)才能觸發(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>

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約