在正文開(kāi)始之前需要介紹一個(gè)人:SeanSexton.來(lái)自明尼蘇達(dá)雙城的軟件工程師。最為出色的是他維護(hù)了兩個(gè)博客:2,000ThingsYouShouldKnowAboutC#和2,000ThingsYouShouldKnowAboutWPF。他以類(lèi)似微博式的150字簡(jiǎn)短語(yǔ)言來(lái)每天更新一條WPF和C#重要又容易被遺忘的知識(shí)。很希望能夠分享給大家。本系列我不僅會(huì)翻譯他的每" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

2000條你應(yīng)知的WPF小姿勢(shì) 基礎(chǔ)篇<63-68 Trigger

系統(tǒng) 2192 0

原文: 2000條你應(yīng)知的WPF小姿勢(shì) 基礎(chǔ)篇<63-68 Triggers和WPF類(lèi)邏輯結(jié)構(gòu)>

  在正文開(kāi)始之前需要介紹一個(gè)人:Sean Sexton.?來(lái)自明尼蘇達(dá)雙城的軟件工程師。最為出色的是他維護(hù)了兩個(gè)博客: 2,000 Things ?You Should Know About C#? ?和? 2,000 Things You Should Know About?WPF ?。他以類(lèi)似微博式的150字簡(jiǎn)短語(yǔ)言來(lái)每天更新一條WPF和C#重要又容易被遺忘的知識(shí)。很希望能夠分享給大家。

  本系列我不僅會(huì)翻譯他的每一個(gè)tip,也會(huì)加入自己開(kāi)發(fā)之中的看法和見(jiàn)解。本系列我希望自己也能和他一樣堅(jiān)持下來(lái),每天的進(jìn)步才能促成偉大。

  在這里鄭重說(shuō)明.該系列是基于Sean Sexton先生的英文博客, Sean Sexton擁有全部版權(quán)和撤銷(xiāo)權(quán)利。

  前文可以翻閱本博客wpf標(biāo)簽的文章。

[ 小九的學(xué)堂,致力于以平凡的語(yǔ)言描述不平凡的技術(shù)。如要轉(zhuǎn)載,請(qǐng)注明來(lái)源: 小九的學(xué)堂 cnblogs.com/xfuture ]


  #63 Trigger觸發(fā)后的屬性改變可以自動(dòng)重置

  當(dāng)Trigger改變了一個(gè)屬性的值后,如果Trigger中的判斷不再為true的時(shí)候,該屬性會(huì)自動(dòng)重置為初始值。

  例子:對(duì)一個(gè)button mouse over的時(shí)候你設(shè)置其有dropshadoweffect,而當(dāng)你離開(kāi)該button的時(shí)候就會(huì)回復(fù)其原始狀態(tài)。

< Window.Resources >
???? < Style x:Key = "hoverStyle" TargetType = "Button" >
???????? < Style.Triggers >
???????????? < Trigger Property = "IsMouseOver" Value = "true" >
???????????????? < Setter Property = "Button.Effect" >
???????????????????? < Setter.Value >
???????????????????????? < DropShadowEffect />
???????????????????? </ Setter.Value >
???????????????? </ Setter >
???????????? </ Trigger >
???????? </ Style.Triggers >
???? </ Style >
</ Window.Resources >
< StackPanel Orientation = "Horizontal" HorizontalAlignment = "Center" >
???? < Button Content = "Run" Height = "23" Width = "75" Style = "{StaticResource hoverStyle}" />
???? < Button Content = "Skip" Height = "23" Width = "75" Style = "{StaticResource hoverStyle}" />
???? < Button Content = "Jump" Height = "23" Width = "75" Style = "{StaticResource hoverStyle}" />
</ StackPanel >

  #64 Wpf所支持的三種Triggers

  Wpf支持三種不同種類(lèi)的Triggers:

  <1>. Property trigger,

  1. 當(dāng)依賴(lài)屬性改變時(shí)觸發(fā),

  2. 使用屬性名字來(lái)定制,

  3. 包含Setter元素,來(lái)賦予一個(gè)或者多個(gè)依賴(lài)屬性觸發(fā)器,當(dāng)Trigger處于active狀態(tài)或者處于inactive狀態(tài)時(shí),可以觸發(fā)一個(gè)或者多個(gè)TriggerAction.

  ?

  <2>. Data trigger,

  1. 當(dāng)CLR屬性改變時(shí)觸發(fā),

  2. 使用Binding 關(guān)鍵字來(lái)定制,

  3. 包含Setter元素,來(lái)賦予一個(gè)或者多個(gè)依賴(lài)屬性觸發(fā)器,當(dāng)Trigger處于active狀態(tài)或者處于inactive狀態(tài)時(shí),可以觸發(fā)一個(gè)或者多個(gè)TriggerAction.

?

  <3>. Event trigger,

  1. 當(dāng)一個(gè)Routed event觸發(fā)時(shí)觸發(fā),

  2. 可以觸發(fā)派生自TriggerAction的類(lèi),比如BeginStoryboard, SoundPlayerAction.

  3. 多用在WPF 動(dòng)畫(huà)上

?

 #65 依賴(lài)屬性繼承邏輯樹(shù)上層元素賦予的值

  依賴(lài)屬性的值可以來(lái)自很多不同的數(shù)據(jù)源,但是一般來(lái)說(shuō)都會(huì)從邏輯樹(shù)上層元素繼承值。

  這意味著當(dāng)你在Xaml中高層元素賦予一個(gè)依賴(lài)屬性值,其子元素相同名字的依賴(lài)屬性會(huì)繼承其值。

  下面是一個(gè)在window元素中定義fontstyle而子元素繼承到的例子:

      
        <
      
      
        Window 
      
      
        x:Class
      
      
        ="WpfApplication1.MainWindow"
      
      
        

        xmlns
      
      
        ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      
      
        

        xmlns:x
      
      
        ="http://schemas.microsoft.com/winfx/2006/xaml"
      
      
        

        xmlns:m
      
      
        ="clr-namespace:PersonLib;assembly=PersonLib"
      
      
        

        Title
      
      
        ="MainWindow"
      
      
         Height
      
      
        ="350"
      
      
         Width
      
      
        ="525"
      
      
         FontStyle
      
      
        ="Italic"
      
      
        >
      
      
        <
      
      
        StackPanel 
      
      
        Orientation
      
      
        ="Vertical"
      
      
        >
      
      
        <
      
      
        Button 
      
      
        Content
      
      
        ="Run"
      
      
         Height
      
      
        ="23"
      
      
         Width
      
      
        ="75"
      
      
        />
      
      
        <
      
      
        Button 
      
      
        Content
      
      
        ="Skip"
      
      
         Height
      
      
        ="23"
      
      
         Width
      
      
        ="75"
      
      
        />
      
      
        <
      
      
        StackPanel 
      
      
        Orientation
      
      
        ="Horizontal"
      
      
        >
      
      
        <
      
      
        Label 
      
      
        Content
      
      
        ="Inside 2nd StackPanel"
      
      
        />
      
      
        <
      
      
        Label 
      
      
        Content
      
      
        ="I do my own FontStyle"
      
      
         FontStyle
      
      
        ="Normal"
      
      
        />
      
      
        </
      
      
        StackPanel
      
      
        >
      
      
        </
      
      
        StackPanel
      
      
        >
      
      
        </
      
      
        Window
      
      
        >
      
    

  子元素中的Label會(huì)繼承window定義的Italic的字體。

?

  #66 依賴(lài)屬性冒泡尋找其繼承值

  一個(gè)UI元素會(huì)向上尋找其需要繼承的值,除非尋找到獨(dú)特定義的屬性則會(huì)一直向上冒泡尋找到根元素。

  下面有個(gè)button中尋找fontstyle屬性值的例子,穿過(guò)了stackpanel和grid一直到window找到其定義值。

      
        <
      
      
        Window 
      
      
        x:Class
      
      
        ="WpfApplication1.MainWindow"
      
      
        

        xmlns
      
      
        ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      
      
        

        xmlns:x
      
      
        ="http://schemas.microsoft.com/winfx/2006/xaml"
      
      
        

        xmlns:m
      
      
        ="clr-namespace:PersonLib;assembly=PersonLib"
      
      
        

        Title
      
      
        ="MainWindow"
      
      
         Height
      
      
        ="350"
      
      
         Width
      
      
        ="525"
      
      
         FontStyle
      
      
        ="Italic"
      
      
        >
      
      
        <
      
      
        Grid
      
      
        >
      
      
        <
      
      
        StackPanel 
      
      
        Orientation
      
      
        ="Vertical"
      
      
        >
      
      
        <
      
      
        Button 
      
      
        Content
      
      
        ="Run"
      
      
         Height
      
      
        ="23"
      
      
         Width
      
      
        ="75"
      
      
        />
      
      
        <
      
      
        Button 
      
      
        Content
      
      
        ="Skip"
      
      
         Height
      
      
        ="23"
      
      
         Width
      
      
        ="75"
      
      
        />
      
      
        </
      
      
        StackPanel
      
      
        >
      
      
        </
      
      
        Grid
      
      
        >
      
      
        </
      
      
        Window
      
      
        >
      
    

?

  #67 UI元素控件的類(lèi)繼承圖

2000條你應(yīng)知的WPF小姿勢(shì) 基礎(chǔ)篇<63-68 Triggers和WPF類(lèi)邏輯結(jié)構(gòu)>

?

  #68 WPF UI元素的四個(gè)基礎(chǔ)類(lèi)

  存在四個(gè)基礎(chǔ)類(lèi),大多數(shù)UI元素繼承自它們,或者你自己定制一些類(lèi)的時(shí)候也是繼承自它們。

  1. ContentElement, 2. FrameworkContentElement, 3. UIElement, 4. FrameworkElement.

2000條你應(yīng)知的WPF小姿勢(shì) 基礎(chǔ)篇<63-68 Triggers和WPF類(lèi)邏輯結(jié)構(gòu)>

?

  下一期會(huì)有更多關(guān)于WPF內(nèi)置結(jié)構(gòu)的Tips,希望能多多關(guān)注~

2000條你應(yīng)知的WPF小姿勢(shì) 基礎(chǔ)篇<63-68 Triggers和WPF類(lèi)邏輯結(jié)構(gòu)>


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 祥云县| 溧阳市| 西峡县| 高邑县| 翼城县| 久治县| 乌海市| 神池县| 上林县| 松滋市| 汪清县| 顺平县| 黎城县| 巴中市| 上高县| 洛南县| 织金县| 东乌珠穆沁旗| 丹江口市| 磴口县| 南阳市| 江达县| 铁岭市| 乌拉特中旗| 通州区| 临西县| 汝阳县| 嘉黎县| 高碑店市| 秭归县| 竹山县| 凉城县| 甘肃省| 大丰市| 霞浦县| 扶沟县| 凉城县| 杂多县| 旬阳县| 瑞丽市| 永济市|