WPF學習筆記(18)觸發器Trigger

觸發器

  • 1. 概述
  • 2. 詳解
    • 2.1. Trigger 用法
    • 2.2. MultiTrigger 用法
    • 2.3. DataTrigger 用法
    • 2.4. EventTrigger 用法
  • 總結


1. 概述

在這里插入圖片描述
官方文檔:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.trigger?view=netframework-4.8

2. 詳解

在Style中可以指定觸發器類型,觸發器分為以下幾種

類型說明
Trigger觸發器,在滿足一個條件時應用屬性值或執行操作的觸發器。
MultiTrigger多觸發器,在滿足多個條件時應用屬性值或執行操作的觸發器 。
DataTrigger數據觸發器,它會在綁定數據滿足指定條件時應用屬性值或執行操作。
EventTrigger事件觸發器,在某個事件發生時應用屬性值或執行操作。

2.1. Trigger 用法

Trigger 類表示觸發器在滿足一個條件時應用屬性值或執行操作,其部分屬性和代碼示例如圖如下

屬性說明
Property獲取或設置一個屬性,該屬性返回要與觸發器的 Value 屬性進行比較的值。該比較是一項引用相等性檢查。
Value獲取或設置要與元素的屬性值進行比較的值。該比較是一項引用相等性檢查。
Setters獲取 Setter 對象的集合,這些對象描述當滿足指定條件時要應用的屬性值。

在這里插入圖片描述

<Window.Resources><Style TargetType="Button" ><!--單條件觸發,鼠標移入--><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Background" Value="White"/></Trigger></Style.Triggers></Style>
</Window.Resources><Grid><Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="251,110,0,0" VerticalAlignment="Top" Height="171" Width="320"/>
</Grid>

2.2. MultiTrigger 用法

MultiTrigger 類表示在滿足多個條件時應用屬性值或執行操作,,其部分屬性和代碼示例如圖如下

屬性說明
Conditions當鼠標左鍵或空格鍵在按鈕上按下時為true,否則false。
獲取或設置觸發器的多個條件。
Setters獲取 Setter 對象的集合,這些對象描述當滿足指定條件時要應用的屬性值。

在這里插入圖片描述

<Window.Resources><Style TargetType="Button" ><!--多條件觸發,鼠標移入和點擊--><MultiTrigger><MultiTrigger.Conditions><Condition Property="IsMouseOver" Value="True"/><Condition Property="IsPressed" Value="True"/></MultiTrigger.Conditions><Setter Property="Background" Value="Yellow"/><Setter Property="FontSize" Value="40"/></MultiTrigger>  </Style.Triggers></Style>
</Window.Resources><Grid><Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="251,110,0,0" VerticalAlignment="Top" Height="171" Width="320"/>
</Grid>

2.3. DataTrigger 用法

DataTrigger 觸發器會在綁定數據滿足指定條件時應用屬性值或執行操作。部分屬性和代碼示例如圖

屬性說明
Binding獲取或設置產生數據對象的屬性值的綁定,該屬性返回要與觸發器的 Value 屬性進行比較的值。
Value獲取或設置要與元素的屬性值進行比較的值。該比較是一項引用相等性檢查。
Setters獲取 Setter 對象的集合,這些對象描述當滿足指定條件時要應用的屬性值。

在這里插入圖片描述

<Grid><CheckBox x:Name="checkBox" Content="大號字體" HorizontalAlignment="Left" Margin="269,84,0,0" VerticalAlignment="Top" Height="26" Width="119"/><!--設置默認字體大小后,會讓樣式里面的Setter屬性不生效,其他屬性同理--><TextBox Text="你猜字體會不會變大" Foreground="Red" HorizontalAlignment="Left" Height="101" Margin="269,162,0,0" TextWrapping="Wrap"  VerticalAlignment="Top" Width="268"><TextBox.Style><Style TargetType="TextBox"><Style.Triggers><DataTrigger Binding="{Binding ElementName=checkBox, Path=IsChecked}" Value="true"><!--DataTrigger.Setters可省略--><Setter Property="FontSize" Value="28"/><Setter Property="Foreground" Value="Blue"/></DataTrigger></Style.Triggers></Style></TextBox.Style></TextBox></Grid>

2.4. EventTrigger 用法

EventTrigger是事件觸發器,應用一組操作影響一個事件。其部分屬性和代碼示例如圖如下,既演示將EventTrigger寫在Window.Resource內,又演示寫在控件內。

屬性說明
RoutedEvent獲取或設置將激活該觸發器的 RoutedEvent。
Actions獲取事件發生時要應用的操作的集合。

在這里插入圖片描述

	<Grid><Button Content="Button" HorizontalAlignment="Left" Margin="269,291,0,0" VerticalAlignment="Top" Height="35" Width="51"><Button.Style><Style TargetType="Button"><Style.Triggers><!--也可只寫RoutedEvent="MouseEnter"--><EventTrigger RoutedEvent="Button.MouseEnter" ><!--調用動畫的故事板--><BeginStoryboard><Storyboard><!--DoubleAnimation的重要內容,From (值從哪里開始), 包含To (值到哪里結束), Duration (值的變化經過多少時間)--><!--本處省略了From (值從哪里開始),TargetProperty為控件的Width,Duration內參數為時分秒,在1.5s內達到300--><DoubleAnimation To="300" Duration="0:0:1.5" Storyboard.TargetProperty="Width"/></Storyboard></BeginStoryboard></EventTrigger></Style.Triggers></Style></Button.Style></Button></Grid>

總結

  • 觸發器既可以寫在Window.Resource內,又可以寫在控件內。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89343.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89343.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89343.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

記本好書:矩陣力量:線性代數全彩圖解+微課+Python編程

書名&#xff1a;矩陣力量&#xff1a;線性代數全彩圖解微課Python編程 作者&#xff1a;姜偉生 出版社&#xff1a;清華大學出版社 出版時間&#xff1a;2023-06-01 ISBN&#xff1a;9787302632511 品牌方&#xff1a;清華大學出版社有限公司 發現一本好書&#xff0c;但是一…

?Webpack打包流程

Webpack打包流程的核心步驟包括初始化配置、解析入口文件、構建依賴圖、模塊轉換、資源優化和輸出文件?。該流程通過遞歸分析模塊依賴關系&#xff0c;結合加載器和插件處理各類資源&#xff0c;最終生成優化后的靜態文件。 ?核心流程概述? ?初始化配置?&#xff1a;讀取…

入門pytorch-聯邦學習

本文聯邦學習的代碼引用于https://github.com/shaoxiongji/federated-learning 本篇文章相當于帶大家讀一遍聯邦學習的代碼&#xff0c;同時加深了大家對聯邦學習和Pytorch框架的理解。 這里想簡單介紹一下聯邦學習。 聯邦學習說白了&#xff0c;就是假如有 N N N個數據擁有…

半導體和PN結

1. 什么是半導體&#xff1f; 導體&#xff0c;電阻率小&#xff0c;即電流容易通過的材料&#xff1b;Cu 絕緣體&#xff0c;導電性低&#xff0c;即電流不易通過的材料&#xff1b;塑料 半導體&#xff0c;常溫下導電性能介于導體和絕緣體之間&#xff0c;是一種導電可控的…

如何分析大語言模型(LLM)的內部表征來評估文本的“誠實性”

如何分析大語言模型(LLM)的內部表征來評估文本的“誠實性” 基于這樣一個假設:模型在生成誠實和不誠實回答時,其內部狀態會存在系統性差異 LAT :線性人工斷層掃描 我們通過一個生活化的例子來理解如何通過分析大語言模型的內部表征評估文本的“誠實性”。 場景類比:判…

【算法】動態規劃 矩陣 :62. 不同路徑

62. 不同路徑 一個機器人位于一個 m x n 網格的左上角 &#xff08;起始點在下圖中標記為 “Start” &#xff09;。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角&#xff08;在下圖中標記為 “Finish” &#xff09;。 問總共有多少條不同的路徑&…

LabVIEW調用Excel宏實現數據可視化

通過LabVIEW 的 ActiveX 接口&#xff0c;調用 Excel 應用程序&#xff0c;實現打開指定Excel 工作簿并運行其中宏&#xff08;如 “GraphData” 宏&#xff09;&#xff0c;將工作表數據以圖表形式展示。通過 ActiveX 自動化技術&#xff0c;打通 LabVIEW 與 Excel 交互通道&a…

初始CNN(卷積神經網絡)

卷積神經網絡&#xff08;Convolutional Neural Network&#xff0c;簡稱 CNN&#xff09;作為深度學習的重要分支&#xff0c;在圖像識別、目標檢測、語義分割等領域大放異彩。無論是手機上的人臉識別解鎖&#xff0c;還是自動駕駛汽車對道路和行人的識別&#xff0c;背后都離…

深度解析Spring Bean生命周期:從字節碼到可用對象的奇幻旅程

&#x1f331; 深度解析Spring Bean生命周期&#xff1a;從字節碼到可用對象的奇幻旅程 你是否曾困惑&#xff1a;為什么PostConstruct有時不執行&#xff1f;為什么循環依賴報錯如此難解&#xff1f;為什么AOP代理在某些場景失效&#xff1f; 本文將徹底拆解Spring Bean的16個…

MySQL 復合查詢和內外連接 -- 子查詢,多表查詢,自連接,合并查詢,表的內外連接

目錄 1. 子查詢 1.1 單行子查詢 1.2 多行子查詢 1.3 多列子查詢 1.4 在 from 子句中使用子查詢 2. 多表查詢 3. 自連接 4. 合并查詢 4.1 union 4.2 union all 5. 表的內連接 6. 表的外連接 下列先給出該博客中所用到的所有表的數據。 &#xff08;1&#xff09;部…

【STM32+LAN9252+HAL庫】EtherCAT從站搭建 保姆級教程

目錄 一、生成協議棧及XML文件 二、使用stm32CuboMX配置外設 三、協議棧移植 鑒于本人對EtherCAT的掌握程度十分有限&#xff0c;這篇文章僅作為我搭建基礎從站的過程記錄不做更多講解。本文內容主要為SPI模式的基礎搭建&#xff0c;更多深入的學習資料和細節&#xff0c;大家…

【LeetCode 熱題 100】239. 滑動窗口最大值——(解法二)滑動窗口+單調隊列

Problem: 239. 滑動窗口最大值 題目&#xff1a;給你一個整數數組 nums&#xff0c;有一個大小為 k 的滑動窗口從數組的最左側移動到數組的最右側。你只可以看到在滑動窗口內的 k 個數字。滑動窗口每次只向右移動一位。返回滑動窗口中的最大值 。 【LeetCode 熱題 100】239. 滑…

MySQL 8.0 連接 5.x 服務器認證問題

總的來說&#xff0c;答案是&#xff1a;可以&#xff0c;但是需要特別注意認證方式的兼容性問題。 MySQL 8.0 引入了新的默認認證插件 caching_sha2_password&#xff0c;而 MySQL 5.x&#xff08;及更早版本&#xff09;使用的是 mysql_native_password。當你用一個 8.0 的客…

Spring原理揭秘(一)

什么是spring&#xff1f; spring框架是一個輕量級的開源的JavaEE框架。 所謂輕量級則是&#xff1a;占用空間小&#xff0c;代碼侵入性低&#xff0c;代碼耦合度低&#xff0c;降低代碼復雜度&#xff0c;可以輕易適配多種框架。 隨著spring的不斷發展&#xff0c;它所占用…

Visual Studio Code自用搜索技巧整理

多文件跨行搜索 用途 在多個日志文件中搜索跨行日志 方法 1.用VS Code打開待搜索文件所在的目錄&#xff1b; 2.按快捷鍵&#xff08;CtrlShiftF&#xff09;打開全局搜索&#xff1b; 3.點擊搜索框右側的開啟正則表達式&#xff1b; 4.輸入正則表達式&#xff0c;例如&…

Axure PR 9 驗證碼登錄 案例

大家好&#xff0c;我是大明同學。 這期內容&#xff0c;我們來用Axure來制作一個短信驗證登錄頁面的小案例。 驗證碼登錄小案例 創建手機號輸入框所需的元件 1.打開一個新的 RP 文件并在畫布上打開 Page 1。 2.在元件庫中拖出一個矩形元件&#xff0c;選中矩形元件&#xf…

監聽器模式

1. 問題背景 假設我們有一個 銀行賬戶管理系統&#xff0c;該系統需要監控用戶賬戶余額的變動&#xff0c;并在發生變動時&#xff0c;自動執行一些相關的操作&#xff0c;比如發送 余額變動通知&#xff08;如短信、郵件等&#xff09;。為了實現這一功能&#xff0c;我們希望…

帕魯杯應急響應賽題:知攻善防實驗室

一、背景信息 在這個跳躍的數字舞臺上&#xff0c;數據安全成了政企單位穩航的重要壓艙石。某政企單位&#xff0c;作為一艘駛向未來 的巨輪&#xff0c;對數據的把控絲毫不敢松懈。眼下&#xff0c;我們即將啟航一場無與倫比的探險——“信息安全探索之 旅”。 這趟旅程的目的…

【硬核數學】2.2 深度學習的“微積分引擎”:自動微分與反向傳播《從零構建機器學習、深度學習到LLM的數學認知》

歡迎來到本系列的第七篇文章。在上一章&#xff0c;我們用張量武裝了我們的線性代數知識&#xff0c;學會了如何描述和操作神經網絡中的高維數據流。我們知道&#xff0c;一個神經網絡的“前向傳播”過程&#xff0c;就是輸入張量經過一系列復雜的張量運算&#xff08;矩陣乘法…

DAY 45 Tensorboard使用介紹

浙大疏錦行https://blog.csdn.net/weixin_45655710知識點回顧&#xff1a; tensorboard的發展歷史和原理tensorboard的常見操作tensorboard在cifar上的實戰&#xff1a;MLP和CNN模型 作業&#xff1a;對resnet18在cifar10上采用微調策略下&#xff0c;用tensorboard監控訓練過程…