你知道WPF這三大模板實例運用嗎?
1、介紹
? ? ? ? ? 對于Windows桌面端應用開發(fā)來講,WPF以其界面渲染的特殊性,靈活的界面布局而讓人津津樂道,因為它能為用戶提供更好的交互體驗。如何利用WPF開發(fā)出讓人賞心悅目的界面與功能呢?這里不僅僅只是布局的功勞,很大一部分都在WPF模板的靈活使用,那么這里就來聊一聊WPF的三大模板。

2、控件模板ControlTemplate
? ? ? ? ?WPF所有控件都是基于呈現(xiàn)與行為分離的模式,開發(fā)人員可以在自己應用場景中根據需要進行不同呈現(xiàn)狀態(tài)的更改,而不會影響到控件的原始功能行為,能讓我們在任意改變控件外觀的同時還能保留控件的操作動作,這里其實除了模板的分離還得益于WPF的路由事件(后面有機會再聊,今天就先說模板)。下面以一個控件為例,可以進行不同的模板修改。
這里我們可以直接使用窗口資源,創(chuàng)建一個ControlTemplate對象,呈現(xiàn)結果與代碼如下:



三個按鈕根據不同的模板進行不了同的呈現(xiàn),但是原始功能依然保留,不受任何影響
3、數據模板DataTemplate
數據模板其實是為了解決數據集綁定中數據呈現(xiàn)的問題,它規(guī)定了數據集中數據如何布局,一般在數據集控件中使用,比如ItemsControl、ListView、ListBox、DataGrid等,下面還是以一個簡單的例子來介紹:



這里的DataTemplate就規(guī)定了綁定到ItemsControl的數據集中的數據如何顯示,而且被綁定的值才能顯示,沒有被綁定的值無法顯示
4、容器模板ItemsPanelTemplate
窗口模板也是伴隨送數據集合控件一起了,它規(guī)定了數據呈現(xiàn)的排列方式,可以通過指定不同的布局控件進行不同的布局顯示,比如下面的例子介紹了以UniformGrid方式進行布局的例子



? ? ? ? ?有時候有人為問我:如何讓一個布局控件通過綁定的方式進行子項的動態(tài)增刪?那么這個問題的奧秘就在上面這個例子中,借助一個數據集合控件,將此控件的容器模板改變成所要動態(tài)增刪子項的容器就可以,不僅僅是Grid、StackPanel還包括UniformGrid、WrapPanel、DockPanel、Canvas都可以,靈活運用能得到意想不到的效果。
? ? ? ? ?最后展示一個利用自定義容器的方式,進行了一個瀑布流式布局的動態(tài)數據呈現(xiàn):

持續(xù)關注后續(xù)更新更多干貨!

END
持續(xù)關注后續(xù)更新更多干貨!