我們不僅可以在**中通過設定屬性值來更改控制項的外觀,還可以在程式執行的過程中動態的改變控制項的外觀。例如,使用者在按鈕上移動滑鼠,按鈕就會改變其外觀。通常,這必須在c#**中實現。但是,使用wpf,我們可以在xaml中實現這個功能,而這功能的實現只會對ui產生影響。xaml有好幾個型別的觸發器:
1.屬性觸發器:在屬性值改變時啟用。
2.多觸發器:基於多個屬性值。
3.資料觸發器:在繫結的資料改變時啟用。
4.事件觸發器:在事件發生時啟用,即觸發路由事件時會被呼叫。
wpf的樣式類(style)有乙個tirgger集合,這是專門儲存觸發器的集合,通過它可以指定屬性觸發器。如下**,將乙個觸發器賦予ismouseover屬性,將另乙個觸發器賦予ispressed屬性。它的效果是如果把滑鼠移到按鈕上(即ismouseover屬性的值為御前true),就會啟用觸發器,將foreground屬性設定為red,將fontsize屬性設定為22;如果按下按鈕,ispressed屬性就是true,啟用第二個觸發器,並將控制項文字的前景色設定為yellow。
注意,只要啟用觸發器的原因不再有效時,觸發器操作進行的修改就會自動重置為原始值。
屬性的值變化時,就會啟用屬性觸發器,如果加為兩個或多個屬性有特定的值,而需要設定觸發器時,就可以使用multitrigger,這就是多觸發器。multitrigger有乙個conditions屬性,可以在其中設定屬性的有效值。它還有乙個setters屬性,可以在其中指定需要設定的屬性。如下示例,給textbox元素定義了乙個樣式,如果isenabled屬性是true,並且text屬性的值為test,就啟用觸發器,把textbox裡面的文字前景色改為red。
關於資料觸發器,我們可以先定義乙個book類,裡面有title(標題)屬性和publisher(出版商)屬性,還過載tostring()方法。
class book
//書名
public string publisher //出版商
public override string tostring()
}
然後在xaml**中,給listboxitem元素指定乙個樣式。該樣式包含datatrigger元素,它繫結到用於列表項的類的publisher屬性上,如果publisher屬性的值是wrox press,background就設定為red,對於dummies和sybex出版社,把background分別設定為yellow和lightblue:
然後在c#**中,在視窗的建構函式中,新增下列**:public mainwindow()
);list1.items.add(new book
);list1.items.add(new book);}
以上三種觸發器的效果圖如下:
至於事件觸發器,它一般在製作動畫效果時使用。
WPF觸發器之資料觸發器(A)
wpf觸發器 屬性觸發器 當依賴屬性的值改變時呼叫。資料觸發器 當普通.net屬性的值改變時呼叫。事件觸發器 當路由事件被觸發時呼叫。1.資料觸發器示例 數字從0 9計數,當數字變為8時候,數字變化成紅色並加粗進行顯示。0 1 2 3 4 5 6 7 8 9 0 2.新建wpf專案,專案名稱 dat...
WPF 觸發器例子
wpf的觸發器很強大,這裡簡單附上觸發器的乙個小例子,分別用xmal和cs 來實現乙個功能,滑鼠懸停在button上時改變字型顏色 1.xmal 如下 cs 如下 public mainwindow 例項style,引數帶上控制項型別 style m style new style typeof b...
WPF之觸發器
觸發器,應用屬性值或有條件地執行操作 1 觸發源 控制項 2 觸發條件 某屬性為某個值,或執行某個事件時 3 執行操作 更改某個屬性值或執行某個事件 4 舉例 當視窗載入時 執行某個事件時 以動畫的形式將視窗的大小倍數從 0 到 1 展示 執行某個事件 1 根據觸發器的觸發條件,在 wpf 中,觸發...