亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

XAML實例教程系列 - 類型轉(zhuǎn)換器(Type Converter

系統(tǒng) 1982 0

在XAML中每一個對象元素映射一個實例,而實例屬性可以通過特性(Attributes)進行賦值。在實際項目開發(fā)中,對象元素的屬性值可以是不同數(shù)據(jù)類型,根據(jù)需求不同,經(jīng)常需要對數(shù)據(jù)類型進行轉(zhuǎn)換,就需要使用XAML的類型轉(zhuǎn)換器(Type Converters)。本篇將講解XAML類型轉(zhuǎn)換器的使用。

?

XAML類型轉(zhuǎn)換器基礎(chǔ)

在Windows 8或者Silverlight應(yīng)用開發(fā)中,經(jīng)常會用到類型轉(zhuǎn)換器,例如對按鈕的內(nèi)容進行賦值,代碼如下:

<Button Content=“按鈕演示”/>

按鈕的Content屬性被賦值為字符串類型“按鈕演示”。XAML語法解析器可以將字符串類型轉(zhuǎn)換為對應(yīng)的.Net類型,然后進行賦值操作。而如果在按鈕控件中,添加內(nèi)容文本顏色屬性,

<Button Content=“按鈕演示”Foreground=“Blue”/>

在.Net Framework中,F(xiàn)oreground屬性的數(shù)據(jù)類型是Brush,通過SolidColorBrush對Color進行賦值,在以上代碼中,XAML語法解析器需要使用類型轉(zhuǎn)換器(Type Converters)將簡單文本字符串“Blue”,轉(zhuǎn)換為對應(yīng)的“Brush”畫刷類型,其顏色值為Red=0,Green=0,Blue=255,Aplha=255。 對應(yīng)后臺代碼類型轉(zhuǎn)換是:

Button button = new Button { Foreground = new SolidColorBrush(Color.FromArgb(0, 0, 255, 255)) };

這一轉(zhuǎn)換過程是由.Net Framework內(nèi)置類型轉(zhuǎn)換器實現(xiàn)的,無需開發(fā)人員干涉。

?

轉(zhuǎn)換過程主要是以下兩個 步驟

1. XAML語法解析器會檢查需要賦值的屬性是否存在內(nèi)置類型轉(zhuǎn)換器,如果發(fā)現(xiàn)對應(yīng)類型轉(zhuǎn)換器,則將屬性的屬性值字符串轉(zhuǎn)換為對應(yīng)的.Net類型;

2. 如果沒有發(fā)現(xiàn)內(nèi)置類型轉(zhuǎn)換器,XAML語法解析器將查找元素對象中是否使用標(biāo)記擴展(Markup Extensions)調(diào)用自定義類型轉(zhuǎn)換器;

如果以上兩個步驟都沒有發(fā)現(xiàn)對應(yīng)類型轉(zhuǎn)換器的存在,XAML語法解析器將返回類型錯誤。

因為XAML支持標(biāo)記擴展(Markup Extensions),可以在運行時對屬性進行賦值,而屬性值類型通常需要進行對應(yīng)的類型轉(zhuǎn)換才能正常使用,所以在實際項目中,經(jīng)常會用到XAML類型轉(zhuǎn)換器功能,不僅僅局限于項目內(nèi)置類型轉(zhuǎn)換器,同時還允許開發(fā)人員通過繼承TypeConverter類創(chuàng)建自定義類型轉(zhuǎn)換器。

?

XAML類型轉(zhuǎn)換器接口實現(xiàn)

XAML類型轉(zhuǎn)換器的語法格式和使用方法與標(biāo)記擴展(Markup Extensions)相同。在XAML后臺代碼實現(xiàn)接口IValueConverter,在Convert和ConvertBack中創(chuàng)建轉(zhuǎn)換器邏輯代碼,

public ? object ?Convert( object ?value,?System.Type?type,? object ?parameter,? string ?language)
????????{?????
???????????? throw ? new ?NotImplementedException(); //這里添加具體類型轉(zhuǎn)換邏輯代碼
????????}

public ? object ?ConvertBack( object ?value,?System.Type?type,? object ?parameter,? string ?language)
????????{
???????????? throw ? new ?NotImplementedException(); //如果是雙向綁定,同時需要添加類型轉(zhuǎn)換邏輯代碼
????????}

?

XAML類型轉(zhuǎn)換器簡單實例

在下面的實例,創(chuàng)建一個Windows 8 Metro應(yīng)用,應(yīng)用實現(xiàn)修改成績百分比,使用類型轉(zhuǎn)換器實現(xiàn)同時修改成績文本。

首先創(chuàng)建一個類文件,ValueConverter.cs,然后實現(xiàn)接口IValueConverter,

?

然后創(chuàng)建類型轉(zhuǎn)換邏輯代碼,
?
?
完成類型轉(zhuǎn)換邏輯代碼后,需要在XAML代碼中聲明引用類型轉(zhuǎn)換器,然后在對象屬性中應(yīng)用類型轉(zhuǎn)換器,
?
?
運行時,當(dāng)改變成績百分比數(shù)值,則成績文本將數(shù)值轉(zhuǎn)換成對應(yīng)文本類型,運行效果如下:
?
?
今天就講到這里,歡迎各位留言討論。
?
?
?

?

?

XAML實例教程系列

XAML實例教程系列 - 標(biāo)記擴展(Markup Extensions)

?

?

歡迎大家留言交流,或者加入QQ群交流學(xué)習(xí):

22308706(一群) 超級群500人?
37891947(二群) 超級群500人?
100844510(三群) 高級群200人?
32679922(四群) 超級群500人?
23413513(五群) 高級群200人?
32679955(六群) 超級群500人?
88585140(八群) 超級群500人?
128043302(九群 企業(yè)應(yīng)用開發(fā)推薦群) 高級群200人?
101364438(十群) 超級群500人?

68435160(十一群 企業(yè)應(yīng)用開發(fā)推薦群)超級群500人

XAML實例教程系列 - 類型轉(zhuǎn)換器(Type Converter)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久成人国产精品免费 | 欧美特黄a级高清免费大片 欧美特黄a级猛片a级 | aaa一级黄色片 | 99免费在线 | 亚洲日韩欧美一区二区在线 | 杨幂国产精品福利在线观看 | 手机看黄av免费网址 | 亚洲欧美自拍另类图片色 | 国产高清在线精品一区二区三区 | 欧美成人免费一区在线播放 | 亚洲精品一区二区 | 九九九精品 | 中文字幕在线视频免费 | 欧美色视频日本片免费高清 | 一区二区中文字幕在线观看 | 中文字幕久久网 | 国产系列 视频二区 | www.xxxx欧美| 欧美毛片日韩一级在线 | 欧美在线一级毛片视频 | 91麻豆精品国产91久久久久久 | 一本色道久久综合亚洲精品高清 | 日本香蕉视频在线观看 | 尤物视频在线 | 成人三级做爰在线观看男女 | 亚洲一级毛片在线观 | 国产最新精品精品视频 | 国产中文 | 久久狠色噜噜狠狠狠狠97 | 毛片大全在线 | 国产精品久久久免费视频 | 国内成人精品视频 | 国产欧美另类久久精品91 | 久久semm亚洲国产 | 国产一二三区精品 | 天天爽天天干天天操 | 一级生活毛片 | 一级片视频免费观看 | 国产亚洲欧美日韩国产片 | 日韩爱爱网站 | 五月婷婷色视频 |