Zara帶你快速入門WPF 3 觸發器篇

2021-08-29 18:05:47 字數 2177 閱讀 7249

一.前言

使用觸發器,可以動態的改變控制項的外觀,因為一些事件或屬性改變了,把滑鼠移動到按鈕上,按鈕就會改變其外觀。通常這些必須寫在c#**中,使用wpf也可以使用xaml實現,而這只會影響ui。

屬性觸發器在屬性值改變時觸發。多觸發器多個屬性,事件觸發器在事件發生時啟用,觸發器在繫結資料的資料改變時觸發。

二.屬性觸發器

style類有乙個triggers屬性,通過它可以指定屬性觸發器,下面的示例中有乙個grid面板,利用window資源定義button元素的預設樣式,這個樣式指定,將background屬性設定為lightblue,將fontsize設定為17,這是應用程式啟動時的樣式,使用觸發器可以改變控制項的樣式,觸發器在style.triggers元素中用trigger元素定義,將觸發器賦予ismouseover屬性,另乙個觸發器賦予ispressed屬性,如果觸發這些屬性,就會改變button的屬性所對應的觸發器屬性。

xmlns=""

xmlns:x=""

xmlns:d=""

xmlns:mc=""

其中需要注意的是,如果把ispressed屬性設定為true,則需要把ismouseover屬性也設定為true;按下該按鈕也需要吧滑鼠放到按鈕上,按下按鈕會啟用ismouseover屬性觸發器,並改變屬性,這裡觸發器的啟用順序很重要,如果這兩個觸發器的順序不同則會出現以下兩種效果,請檢視!如下。

當啟用觸發器的原因不再有效時,就不必要將屬性重置為原始值了,例如,不必定義ismuseover=true和ismouseover=false的觸發器,只要原因不在有效,就不會走了!

trigger類的屬性,以指定觸發器的操作.如下表:

property value     

使用屬性觸發器,property和value屬性用於指定觸發器的啟用時間,列如property=「ismouseover」 value="true"

setters 

一旦啟用觸發器,就可以使用setters定義乙個setter元素集合,來改變屬性值,其中定義了property,targetname,value 來該物件屬性。

enteractions,exitactions

三.多觸發器

當屬性的值改變時,就會啟用屬性觸發器,如果因為兩個或多個屬性有特定的值,而需要設定觸發器,就可以使用multitrigger.

multitrigger有乙個conditions屬性,可以在其中設定屬性的有效值,它還有乙個setters屬性,可以在其中指定需要設定的屬性,在下面的示例中,給textbox定義了樣式,如果isenabled屬性是true,那麼text屬性的值是test,就應用觸發器。如果應用這兩個觸發器就把textbox和foreground屬性改變為red.

xmlns=""

xmlns:x=""

xmlns:d=""

xmlns:mc=""

這代表了這個按鈕只有在滿足codition這兩個條件的時候才走setters

三.資料觸發器

如果繫結到控制項上的資料滿足指定的條件,就啟用資料觸發器,下面的示例中使用book類,它根據圖書的出版社顯示不同的內容。

book.cs

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

mainwindow.xaml

xmlns=""

xmlns:x=""

xmlns:d=""

xmlns:mc=""

mc:ignorable="d"

title="mainwindow" height="450" width="800">

後台**中初始化幾個book物件,通過binding中的定義就會給它進行格式化!

); list.items.add(new book ); list.items.add(new book ); //重複資料 #region list.items.add(new book ); list.items.add(new book ); list.items.add(new book ); #endregion } } }

Zara帶你快速入門WPF 3 觸發器篇

一.前言 使用觸發器,可以動態的改變控制項的外觀,因為一些事件或屬性改變了,把滑鼠移動到按鈕上,按鈕就會改變其外觀。通常這些必須寫在c 中,使用wpf也可以使用xaml實現,而這只會影響ui。屬性觸發器在屬性值改變時觸發。多觸發器多個屬性,事件觸發器在事件發生時啟用,觸發器在繫結資料的資料改變時觸發...

flask 帶你快速入門

建立乙個python檔案 hello.py from flask import flask defhello world 檢視函式 return hello world 返回乙個字串 if name main 用python直譯器來執行 python hello.py running on上面 首先...

flask 帶你快速入門

from flask import flask defhello world 檢視函式 return hello world 返回乙個字串 if name main python hello.py running on接下來,我們建立乙個該類的例項,第乙個引數是應用模組或者包的名稱。如果你使用單 塊...