WPF 實際應用的小技巧(一)


在做WPF設計的時候遇到了一個問題,tabcontrol的切換。例如下圖:

你會怎么做這個控件?

1.寫5個tabitem樣式?

2.寫一個自定義控件?

3?

我們的目標是沒有代碼,這樣怎么能符合我們的目標。

好吧,本人比較懶的寫代碼,最終發現了一個方法,只用一個樣式就能解決所有問題!這個神器就是HeaderedContentControl。

HeaderedContentControl的Header和Content都是object類型的,所以可以實現我們需求的功能。

1.新建一個HeaderedContentControl。

2.創建content的數據模板

3.在模板中添加一個圖片

4.給圖片的source添加一個綁定。(什么也不用填,直接點確定)

5.回到HeaderedContentControl的頁面,對headerTemple做同樣的操作。

6.做完以上操作查看下代碼,你的代碼應該有下圖的那些東西。

7.繼續編輯HeaderedContentControl的模板。

8.出現模板編輯頁面后分別給兩個ContentSource命名。

9.看到ContentPresenter1有個contentSource指向header,那么給ContentPresenter2的contentsource指向content

10.給HeaderedContentControl加一個觸發器,判斷圖片的顯示個影藏。美工們按照代碼敲吧,程序門肯定懂什么意思了。

11.注意,注意!我們研究下下面的代碼。

 <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type CheckBox}},Path=IsChecked}" Value="True">

看到AncestorType={x:Type CheckBox}你會疑問怎么是checkbox,其實這邊該填寫的是上級元素,如果你的是tabitem,那邊這邊就是tablitem,如果是button,這邊就填寫button。path則是觸發觸發器的屬性,我的是checkbox,最IsChecked時觸發。如果你是tabitem,則是IsSelected時觸發。

12.寫完這個控件可以使用了。

13.最后一步,分別給HeaderedContentControl的Header和Content賦值。圖片路徑用絕對路徑

 

舉一反三:1.到這里就結束了,兩張圖片的切換下次你有了另一個選擇HeaderedContentControl。當你的按鈕都是兩張圖片切換的時候,當你的tabitem

的頭部為兩張圖片切換的時候你都可以用HeaderedContentControl解決。

2.不一定是圖片,文字切換,文字和圖片的切換等等,HeaderedContentControl都可以滿足你。

附tabitem寫法

 

自己去做一遍吧,很有用的東西。有什么不懂得可以留言,或者去群里問我。

如果覺得對你有幫助,點個推薦吧!

更多的WPF/SL實戰技巧!我們的目標是沒有代碼!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM