日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

WPF中Style樣式及其觸發器_基礎應用

作者:痕跡g ? 更新時間: 2022-04-08 編程語言

WPF中的各類控件元素, 都可以自由的設置其樣式。 諸如:

  • 字體(FontFamily)
  • 字體大小(FontSize)
  • 背景顏色(Background)
  • 字體顏色(Foreground)
  • 邊距(Margin)
  • 水平位置(HorizontalAlignment)
  • 垂直位置(VerticalAlignment) 等等。

而樣式則是組織和重用以上的重要工具。不是使用重復的標記填充XAML, 通過Styles創建一系列封裝所有這些細節的樣式。然后通過Style屬性應用封裝好的樣式。這點類似于CSS樣式。然而, WPF樣式的功能更加強大, 如控件的行為。WPF的樣式還支持觸發器(后面章節會講到)。

示例

為了能夠直觀了解到樣式(Style)的使用方法, 下面演示一個從傳統的定義控件樣式到使用Style組織樣式的方法。

下面的例子中, 給4個TextBlock設置同樣的樣式: 字體、字體大小、字體顏色、加粗設置。

效果圖與實際代碼如下所示:

上面有講到, 樣式是組織和重用的工具。 而上面的代碼, 由于每個元素都是相同的, 但是每個元素XAML都重復定義。 下面將介紹通過樣式如何優化上面的代碼。

  • 第一步: 在Resources目錄下定義一個TextBlockStyle的樣式, 完整代碼如下:

Style結構定義了一個 x:key 這點類似于Html中定義id和class, 然后css即可對相應的class和id樣式生效。TargetType 的設置為類型TextBlock, 設置目標類型靜態文本TextBlock。

  • 第二步:通過控件的Style屬性 來引用x:key 的樣式, 代碼如下:

注意: 當控件引用了某個樣式, 在控件本身并沒有定義該屬性的情況下,優先使用樣式中的定義,否則優先控件本身的定義。如下所示, 樣式中設置了顏色為 Red, 但是控件本身又設置了Green, 那么控件的最終效果 Green。

觸發器介紹

顧名思義, 觸發器可以理解為, 當達到了觸發的條件, 那么就執行預期內的響應, 可以是樣式、數據變化、動畫等。觸發器通過 Style.Triggers集合連接到樣式中, 每個樣式都可以有任意多個觸發器, 并且每個觸發器都是 System.Windows.TriggerBase的派生類實例, 以下是觸發器的類型

  • Trigger : 監測依賴屬性的變化、觸發器生效
  • MultiTrigger : 通過多個條件的設置、達到滿足條件、觸發器生效
  • DataTrigger : 通過數據的變化、觸發器生效
  • MultiDataTrigger : 多個數據條件的觸發器
  • EventTrigger : 事件觸發器, 觸發了某類事件時, 觸發器生效。

Trigger

下面以Border為例, 演示一個簡單的Trigger觸發器。當鼠標進入Border的范圍, 改變Border的背景顏色和邊框顏色, 當鼠標離開Border的范圍, 還原Border的顏色。代碼如下所示:

實際效果:

MultiTrigger

和Trugger類似, MultiTrigger可以設置多個條件滿足時, 觸發, 下面以TextBox為例, 做一個簡單的Demo當鼠標進入文本框的范圍, 并且光標設置到TextBox上, 則把TextBox的背景顏色改變成Red

實際效果:

EventTrigger

事件觸發器, 當觸發了某類事件, 觸發器執行響應。下面用實例演示, 為了能直觀感受到這類觸發器的作用, 用動畫演示其功能,下面使用了動畫相關的知識, 在學習到后面幾個章節, 讀者可以進行相關的內容學習。當鼠標進入按鈕的范圍中, 在0.02秒內, 把按鈕的字體變成18號當鼠標離開按鈕的范圍時, 在0.02秒內, 把按鈕的字體變成13號 。 代碼及效果如下所示:

實際效果:

結尾: 對于 DataTrigger / MultiDataTrigger 的功能類似, 只不過觸發條件變成了以數據的方式為條件, 這塊, 需要了解的可以自個兒進行研究。

原文鏈接:https://www.cnblogs.com/zh7791/p/11372623.html

欄目分類
最近更新