新聞中心
WPF圖形界面顯示工具是由微軟公司研發(fā)的一款全新的圖形處理工具。它的使用可以幫助開(kāi)發(fā)人員簡(jiǎn)單的實(shí)現(xiàn)圖形界面的開(kāi)發(fā)。#t#

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),蘭山企業(yè)網(wǎng)站建設(shè),蘭山品牌網(wǎng)站建設(shè),網(wǎng)站定制,蘭山網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,蘭山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
WPF包含數(shù)據(jù)模板和控件模板,其中控件模板又包括ControlTemplate和ItemsPanelTemplate,這里討論一下WPF ControlTemplate。
其實(shí)WPF的每一個(gè)控件都有一個(gè)默認(rèn)的模板,該模板描述了控件的外觀以及外觀對(duì)外界刺激所做出的反應(yīng)。我們可以自定義一個(gè)模板來(lái)替換掉控件的默認(rèn)模板以便打造個(gè)性化的控件。
與Style不同,Style只能改變控件的已有屬性值(比如顏色字體)來(lái)定制控件,但控件模板可以改變控件的內(nèi)部結(jié)構(gòu)(VisualTree,視覺(jué)樹)來(lái)完成更為復(fù)雜的定制,比如我們可以定制這樣的按鈕:在它的左辦部分顯示一個(gè)小圖標(biāo)而它的右半部分顯示文本。
要替換控件的模板,我們只需要聲明一個(gè)WPF ControlTemplate對(duì)象,并對(duì)該ControlTemplate對(duì)象做相應(yīng)的配置,然后將該ControlTemplate對(duì)象賦值給控件的Template屬性就可以了。
WPF ControlTemplate包含兩個(gè)重要的屬性:
1,VisualTree,該模板的視覺(jué)樹,其實(shí)我們就是使用這個(gè)屬性來(lái)描述控件的外觀的
2,Triggers,觸發(fā)器列表,里面包含一些觸發(fā)器Trigger,我們可以定制這個(gè)觸發(fā)器列表來(lái)使控件對(duì)外界的刺激發(fā)生反應(yīng),比如鼠標(biāo)經(jīng)過(guò)時(shí)文本變成粗體等。
參考以下代碼
- < Button>
- < Button.Template> < ControlTemplate>
- < !--定義視覺(jué)樹-->
- < Grid>
- < Ellipse Name="faceEllipse" Width="
{TemplateBinding Button.Width}"
Height="{TemplateBinding Control.Height}"
Fill="{TemplateBinding Button.Background}"/>- < TextBlock Name="txtBlock"
Margin="{TemplateBinding Button.Padding}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Text="{TemplateBinding Button.Content}" />- < /Grid> < !--定義視覺(jué)樹_end-->
- < /ControlTemplate>
- < /Button.Template>
- < /Button>
在上面的代碼中,我們修改了Button的Template屬性,我們定義了一個(gè)WPF ControlTemplate,在< ControlTemplate> ... < /ControlTemplate>之間包含的是模板的視覺(jué)樹,也就是如何顯示控件的外觀,我們這里使用了一個(gè)Ellipse(橢圓)和一個(gè)TextBlock(文本塊)來(lái)定義控件的外觀。
很容易聯(lián)想到一個(gè)問(wèn)題:控件(Button)的一些屬性,比如高度、寬度、文本等如何在新定義的外觀中表現(xiàn)出來(lái)呢?
我們使用TemplateBinding 將控件的屬性與新外觀中的元素的屬性關(guān)聯(lián)起來(lái)Width="{TemplateBinding Button.Width}" ,這樣我們就使得橢圓的寬度與按鈕的寬度綁定在一起而保持一致,同理我們使用Text="{TemplateBinding Button.Content}"將TextBlock的文本與按鈕的Content屬性綁定在一起。
新聞名稱:深入詳解WPFControlTemplate
轉(zhuǎn)載來(lái)于:http://fisionsoft.com.cn/article/dhcjgpo.html


咨詢
建站咨詢
