WPF-07 Style之觸發器

觸發器能夠在改變屬性值的時候,根據值變化執行操作,在不需要創建一個新的控件的情況下,可以動態的改變控件的外觀,當條件滿足時,觸發器可以改變任何屬性的值,觸發器通常定義在Style中,在窗體的根節點下被應用到指定的控件

Property Triggers

在Triggers集合中一個Trigger對象,當Trigger中定義的條件滿足時,則會觸發相應的操作,下面例子當鼠標移動到按鈕上時,鼠標會變成手狀態

<Window x:Class="Example_07.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Example_07" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"><Window.Resources><Style TargetType="Button"><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Cursor" Value="Hand" /></Trigger></Style.Triggers></Style></Window.Resources><Grid><Button Width="200" Height="100" Grid.Row="0" Grid.ColumnSpan="2">Hello World</Button></Grid>
</Window>

Data Triggers

Data Triggers 表示當綁定的數據滿足條件時,會執行相應操作,這里我們先做一個簡單的DataTrigger演示,當我們選中CheckBox時,會改變對應TextBlock中的值

<Window x:Class="Example_07.DataTriggerSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Example_07" mc:Ignorable="d" Title="DataTriggerSample" Height="200" Width="300"><Window.Resources><Style TargetType="TextBlock"><Style.Triggers><DataTrigger Binding="{Binding ElementName=cbIsPass,Path=IsChecked}" Value="True"><Setter Property="Text" Value="Pass"></Setter><Setter Property="Foreground" Value="Green"></Setter><Setter Property="FontSize" Value="40"></Setter></DataTrigger><DataTrigger Binding="{Binding ElementName=cbIsPass,Path=IsChecked}" Value="False"><Setter Property="Text" Value="NO"></Setter><Setter Property="Foreground" Value="Red"></Setter><Setter Property="FontSize" Value="40"></Setter></DataTrigger></Style.Triggers></Style></Window.Resources><Grid><Grid.RowDefinitions><RowDefinition Height="20"></RowDefinition><RowDefinition Height="100"></RowDefinition></Grid.RowDefinitions><CheckBox Grid.Row="0" Name="cbIsPass" Content="是否通過" Width="100" Height="30"></CheckBox><TextBlock Grid.Row="1" TextAlignment="Center"></TextBlock></Grid>
</Window>

Event Triggers

事件觸發器表示當指定的事件觸發時,會執行對應的操作,事件觸發器一般應用在動畫中,下面例子演示鼠標移動到控件上時,字體會變大,當鼠標離開時,字體會恢復原始狀態

<Window x:Class="Example_07.EventTriggerSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Example_07" mc:Ignorable="d" Title="EventTriggerSample" Height="450" Width="800"><Window.Resources><Style TargetType="TextBlock"><Style.Triggers><EventTrigger RoutedEvent="MouseEnter"><EventTrigger.Actions><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:3" Storyboard.TargetProperty="FontSize" To="100"/></Storyboard></BeginStoryboard></EventTrigger.Actions></EventTrigger><EventTrigger RoutedEvent="MouseLeave"><EventTrigger.Actions><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:3" Storyboard.TargetProperty="FontSize" To="18" /></Storyboard></BeginStoryboard></EventTrigger.Actions></EventTrigger></Style.Triggers></Style></Window.Resources><StackPanel VerticalAlignment="Center"><TextBlock Text="事件觸發器" TextAlignment="Center"></TextBlock></StackPanel>
</Window>

我們介紹了WPF常用的三種類型觸發器Trigger、DataTrigger、EventTrigger另外還有兩種多條件觸發器MultiTrigger、MultiDataTrigger滿足多個條件是觸發

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

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

相關文章

jdk自帶常用命令行工具使用

轉自&#xff1a;http://blog.csdn.net/winwill2012/article/details/46364923jps命令使用jps命令類似于Linux下的ps命令&#xff0c;用于列出當前正在運行的所有Java進程。基本用法直接運行不加任何參數就能列出所有java進程的pid和類的短名稱。例如&#xff1a;常用參數-q參數…

crossphp框架中,在模板中加載其他模板

這里說我自己做的項目的應用場景 要求是用layui框架的layer組件,實現彈出層效果,用原聲PHP無疑很容易做到,但是如果應用到crossphp框架流程就會非常麻煩 這里簡單講一下大致的步驟: 1. 在一個模板文件中應用layui的layer組件實現彈出框 index.tpl.php2. 從我們自己定義的路徑上…

for(auto c:s)與for(auto c:s)

在c11標準下可以執行的特殊格式的for循環語句&#xff0c;區別在于引用類型可以改變原來的值 #include<iostream> using namespace std; int main() {string s("hello world");for(auto c:s)ct;cout<<s<<endl;//結果為hello worldfor(auto &c:…

MASA Framework的MinimalAPIs應用

在以前的MVC引用程序中&#xff0c;控制器是一個功能齊全的框架&#xff0c;但它偏重&#xff0c;因此在.Net6.0官方引入了MinimalAPIs&#xff0c;即最小API&#xff0c;與MVC相比&#xff0c;它足夠的簡潔&#xff0c;適合小型服務來使用&#xff0c;下面就讓我們看看如何使用…

【轉】Java開發必須要知道的知識體系

Java Java是一門超高人氣編程語言&#xff0c;擁有跨平臺、面向對象、泛型編程等特性。在TIOBE編程語言排行榜中&#xff0c;連續奪得第一寶座&#xff0c;而且國內各大知名互聯網公司&#xff0c;后端開發首選語言&#xff1a;非Java莫屬。今天只是梳理下Java知識體系&#xf…

CrossPHP--在我們用ajax,js取不到指定數據時,我們可以換一種方式

項目中遇到的問題: 需求: 用的是layui的laypage組件,進行分頁操作,熟悉layui的朋友都知道,laypage需要從服務端給其一個總條數, 但是在進行ajax請求時出了問題, 我是這樣定義的但是調用的時候卻無法將數值直接返回回去,所以這里只能更換一種思路 在控制器中進行數據的查詢,然后…

VS 代碼行數統計

按CTRLSHIFTF (Find in files)&#xff0c;勾上支持正則表達式&#xff0c;然后輸入搜索內容&#xff1a; ^:b*[^:b#/].*$#開頭和/開頭或者空行都不計入代碼量。如果需要只統計代碼文件的代轉載于:https://www.cnblogs.com/sunlyk/p/7484728.html

MySQL設置從庫只讀模式

常見現象 運維工作中會經常維護MySQL主從服務器&#xff0c;當然Slave我們只是用于讀操作。 一般權限開通也只授權只讀賬號&#xff0c;但是有時候維護工作可能不是一個人在做&#xff0c;你不能保證其他同事都按照這個標準操作。 有同事可能會授權Slave庫MySQL賬號為all或者se…

尋找kernel32.dll的地址

為了尋找kernel32.dll的地址&#xff0c;可以直接輸出&#xff0c;也可以通過TEB,PEB等查找。 尋找TEB: dt _TEB nt!_TEB 0x000 NtTib : _NT_TIB 0x01c EnvironmentPointer : Ptr32 Void 0x020 ClientId : _CLIENT_ID 0x028 ActiveRpcHandle : Ptr32 Void 0x02c ThreadLocalSto…

layui彈出層使用(layer.alert / layer.open / layer.prompt )

一 layer.alert 效果圖: 代碼: //取消提現 function back(id) {layer.alert(真的要取消嗎, {skin: layui-layer-molv //樣式類名 自定義樣式,closeBtn: 1 // 是否顯示關閉按鈕,anim: 1 //動畫類型,btn: [確定,取消] //按鈕,icon: 6 // icon,yes:function(){return $.aj…

SkiaSharp 自繪彈幕效果

SkiaSharp 自繪彈幕效果控件名&#xff1a;SkiaSharpBarrage作者&#xff1a; 驚鏵原文鏈接&#xff1a; https://github.com/yanjinhuagood/SkiaSharpBarrage框架使用.NET60&#xff1b;Visual Studio 2022;項目使用 MIT 開源許可協議&#xff1b;接著上一篇 WPF 彈幕上期有…

JavaScript中this指向

一.重點來了&#xff0c;this指向問題&#xff1a;1.this指向之普通函數。 2.this指向之對象 3.this指向之構造函數 4.this指向之&#xff08;call,apply&#xff09;動態更改this指向。 二.具體分析如下 1.普通函數 // 第23行的調用者為null,this指向也為null,// 所以這時js把…

【python】python中的定義類屬性和對像屬性

python中變量是沒有類型的可以綁定任意類型&#xff0c;但是在語法上不能聲明變量。 那我們怎麼來聲名一個變量呢&#xff1f; fNone 這樣我們給著個變量綁定了以各None類型&#xff0c;我們隨時可用重新綁定其它類型。這樣我們起到了預先聲名變量的效果。 類中如何去定義類的…

提交Form表單,submit之前做js判斷處理

效果:在點擊提交按鈕時,首先進行js判斷, 如果不符合條件,則alert出提示信息,并return false. 主要點就在于給form表單添加一個onsubmit事件. 在onsubmit事件中定義的函數里進行js驗證處理.代碼 : <!DOCTYPE html> <html lang"en"> <head><meta …

如何在Windows上一鍵部署PaddleOCR的WebAPI服務

PaddleOCR旨在打造一套豐富、領先、且實用的OCR工具庫&#xff0c;助力開發者訓練出更好的模型&#xff0c;并應用落地。官方開源項目地址&#xff1a;https://github.com/PaddlePaddle/PaddleOCR一定會有小伙伴們看完不知道如何部署與應用&#xff0c;怎么才能融入到自己的產品…

微軟為 Visual Studio 擴展添加對 Arm64 的支持

微軟在 6 月份推出了支持 Arm64 架構的 Visual Studio&#xff0c;這是第一個原生支持在基于 Arm 的處理器上構建和調試 Arm64 應用程序的 Visual Studio 版本。近日&#xff0c;他們宣布為 Visual Studio 擴展也添加了對 Arm64 的支持&#xff0c;因此開發者可在 Arm64 Visual…

WIN10 查看已經連接的wifi的密碼

命令行: 1. 顯示以前連接過的wifi2. 將wifi配置存入文件中3. 查看剛剛保存的wifi配置的文件這樣,我們就可以看到連接的wifi名稱和wifi密碼了.

ubantu 重啟mysql

如何啟動/停止/重啟MySQL一、 啟動方式1、使用 service 啟動&#xff1a;service mysql start2、使用 mysqld 腳本啟動&#xff1a;/etc/inint.d/mysql start3、使用 safe_mysqld 啟動&#xff1a;safe_mysql&二、停止1、使用 service 啟動&#xff1a;service mysql stop2…

C++ 反射機制的簡單實現

C并不支持反射機制&#xff0c;只能自己實現。 如果需要實現字字符串到函數到映射&#xff0c;一定要使用到函數指針。 簡單實現反射機制&#xff0c;根據字符串來構造相應到類。主要有以下幾點&#xff1a; (1) 可以使用map保存字符從到函數指針到映射。 (2) 工廠類提供字符串…

微軟與 Canonical 合作,將 systemd 引入 WSL

微軟和 Canonical 聯合宣布&#xff0c;systemd 現在可以在 Windows Subsystem for Linux&#xff08;WSL2&#xff09;中運行了&#xff0c;此舉可以讓用戶在 Windows 設備上獲得更加全面的 Linux 體驗。systemd 的作者 Lennart Poettering 在 7 月份離開紅帽并加入了微軟&…