我們常常透過資料繫結來呈現各種不同的資料,但是隨著使用者介面的進步,如果能隨著資料的內容改變資料呈現的方式的話,那對使用者來說將會更加的直覺,也可以讓一成不變的畫面增添許多更豐富的元素。
這次就用一個範例,來跟各位分享在WPF中,不需要撰寫一行的CodeBehind程式碼(不過要寫XAML啦~),就能讓呈現資料的介面會隨著我們訂義好的條件以及資料的內容自動採取不同的顯示方式。
我們常常透過資料繫結來呈現各種不同的資料,但是隨著使用者介面的進步,如果能隨著資料的內容改變資料呈現的方式的話,那對使用者來說將會更加的直覺,也可以讓一成不變的畫面增添許多更豐富的元素。
這次就用一個範例,來跟各位分享在WPF中,不需要撰寫一行的CodeBehind程式碼(不過要寫XAML啦~),就能讓呈現資料的介面會隨著我們訂義好的條件以及資料的內容自動採取不同的顯示方式。
先來看看實際的範例程式吧:
光看上面的範例應該是看不出什麼特別之處,就容我來講解一下我做了什麼吧!
首先,我透過Expression Blend產生了以下的範例資料:
接著呢,我想透過一個ListBox來呈現這些資料,並且我希望每個項目的背景色會依照性別的不同而改變,而且若該資料中的明星已經逝世的話,我希望在名字的旁邊會出現一個標示為逝世的小圖示。
就讓我先跳過怎麼把透過修改ListBox.ItemsTemplate的方式來讓每筆資料以上述方式來呈現的部份,直接切入這次的主題 - DataTemplate.Triggers!!
我們除了可以透過將自訂的DataTemplate指定給ListBox的ItemsTemplate屬性來決定資料的呈現方式之外,還可以更進一步的在DataTemplate中加入觸發器,一旦繫結資料符合我們所設定的條件,就可以在執行期動態的改變DateTemplate中項目的屬性。
而DataTemplate中可以使用的Triggers不只一種,不過因為這次我們只需要透過資料的內容來當作觸發條件,所以就只使用到DataTrigger而已喔!!
在XAML中DataTemplate.Triggers的基本寫法如下:
再來看看我寫的實例,應該就會更有Fu喔!!
CodeBehind呢!!?免!!一行都不用寫~~是不是比想像中來得簡單呢!!?
最後,歡迎有興趣的朋友請自行下載專案原始碼回去研究喔~