欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 1807 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元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产高清在线视频 | 三级在线观看视频 | 中文字幕在线免费观看 | 欧美特黄 | 国产一区二区视频在线播放 | 色综合99天天亚洲 | 九九九九九热 | 久久99精品久久 | 久久亚洲热| 国产一区二区 | 我不卡在线观看 | 久久se精品一区精品二区 | 精品无码中出一区二区 | 久久99精品久久久久久国产越南 | 久久成人精品 | 午夜免费 | 欧美日韩一区精品 | 亚洲精品第五页中文字幕 | 五月色综合 | 久久综合九色综合国产 | 毛片在线免费观看完整版 | 亚洲高清中文字幕一区二区三区 | 国产精品视频免费视频 | 亚洲精品久久久久中文字幕欢迎你 | 久久在线中文字幕 | 亚洲欧美日韩精品中文乱码 | 天天视频在线播放观看视频 | 免费国产自久久久久三四区久久 | 中文字幕日本亚洲欧美不卡 | 天天色综合色 | 2019中文字幕视频 | 欧美精品一二三区 | 九热 | 欧美天天视频 | 一级片免费在线观看 | 欧美淫视频 | av毛片在线免费看 | 国内精品视频在线观看 | 欧美日在线 | 日本在线亚州精品视频在线 | 欧美精品一区二区三区在线 |