這節來講一下WPF中的觸發器——Trigger。觸發器,是指在既定條件或者特殊場景下被觸發,從而去執行一個操作。在WPF中,觸發器可以分為以下幾類:基本觸發器(Trigger);事件觸發器(EventTrigger);數據觸發器(DataTrigger);多條件觸發器(MultiTrigger,MultiDataTrigger)。下面我們來通過代碼一一了解。
1
基本觸發器(Trigger)
請看如下代碼:
我為Slider控件的樣式設置了一個基本觸發器,需要關注的是Trigger的Property和Value,Property設置要根據Slider控件的哪個屬性觸發,Value設置當屬性為何值時觸發,在Setter中也有Property和Value,此處則是設置觸發時要執行的操作,上述觸發器的作用時當Slider的Value為1時,設置其背景為純綠色:運行效果如下:
設置了兩個Slider作對比,當Slider值為1時,觸發器被觸發,背景色也進行了對應修改。
當我們想監視多個屬性的值來控制觸發器的執行,可以使用MultiTrigger,請看如下代碼:
多屬性觸發器,需要將多個觸發條件寫在MultiTrigger.Conditions中,其它用法都是一致的,上述代碼中,當Slider的Value為1並且樣式為垂直的時候,觸發器才會觸發,運行結果如下:
2
事件觸發器(EventTrigger)
請先看如下代碼:
事件觸發器有些不同的是,它觸發執行的是一段動畫,並且是通過RoutedEvent來執行要監視的事件,上述代碼中,當Button的MouseEnter事件被觸發時,其前景色會逐漸變成紫色,請看運行結果:
(關於WPF動畫的相關知識,會在下節講述,請關注后續文章。)
3
數據觸發器(DataTrigger)
請看如下代碼:
我們還是以修改Slider背景色為例子,數據觸發器使用Binding來設置要監視的對象,其結果跟示例1一致,此處不再展示,除了綁定一個數據,也可以通過MultiDataTrigger來綁定多個數據,當多個數據同時滿足條件時才觸發:
多數據觸發器,需要將多個觸發條件寫在MultiDataTrigger.Conditions中,其它用法都是一致的,上述代碼中,當Slider的Value為1並且最大值為1的時候,觸發器才會觸發,運行結果如下: