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

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

系統 1730 0

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

?

XAML類型轉換器基礎

在Windows 8或者Silverlight應用開發中,經常會用到類型轉換器,例如對按鈕的內容進行賦值,代碼如下:

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

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

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

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

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

這一轉換過程是由.Net Framework內置類型轉換器實現的,無需開發人員干涉。

?

轉換過程主要是以下兩個 步驟

1. XAML語法解析器會檢查需要賦值的屬性是否存在內置類型轉換器,如果發現對應類型轉換器,則將屬性的屬性值字符串轉換為對應的.Net類型;

2. 如果沒有發現內置類型轉換器,XAML語法解析器將查找元素對象中是否使用標記擴展(Markup Extensions)調用自定義類型轉換器;

如果以上兩個步驟都沒有發現對應類型轉換器的存在,XAML語法解析器將返回類型錯誤。

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

?

XAML類型轉換器接口實現

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

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

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

?

XAML類型轉換器簡單實例

在下面的實例,創建一個Windows 8 Metro應用,應用實現修改成績百分比,使用類型轉換器實現同時修改成績文本。

首先創建一個類文件,ValueConverter.cs,然后實現接口IValueConverter,

?

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

?

?

XAML實例教程系列

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

?

?

歡迎大家留言交流,或者加入QQ群交流學習:

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

68435160(十一群 企業應用開發推薦群)超級群500人

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 伊人第一页 | 国产成人综合网在线观看 | 国产精品高清在线观看93 | 欧美黑人巨大肥婆性视频 | 久久国产欧美日韩高清专区 | 四虎影院视频在线观看 | 国产在线观看91精品不卡 | 国产精品视频视频久久 | 麻豆国产原创 | 亚洲爱爱天堂 | 婷婷激情五月综合 | 天天爽天天操 | 夜夜爱夜夜爽夜夜做夜夜欢 | 日韩图区| 91精品久久久久久久久久 | 久久99精品一级毛片 | 国产精品国产国产aⅴ | 亚洲国产99在线精品一区二区 | 久久成人视 | 九九99九九精彩网站 | 视频在线观看一区 | 中文字幕高清免费不卡视频 | 日本一级成人毛片免费观看 | 国产毛片久久精品 | 亚洲国产成人久久三区 | 久久中文字幕久久久久 | 狠狠色噜噜狠狠狠狠69 | 欧美三级美国一级 | 天海翼一区二区三区免费 | 日本wwwsss| 淫香视频 | 九九热精 | 国产成人乱码一区二区三区在线 | www.天天干.com| 久久久一区二区三区 | 日韩专区中文字幕 | 欧美精品亚洲精品日韩专区 | 亚洲国产第一区二区三区 | 99热在线免费 | 91在线视频免费看 | 久久精品国产国语对白 |