日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Silverlight 4之旅(三)数据绑定(中)

發(fā)布時(shí)間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Silverlight 4之旅(三)数据绑定(中) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在上篇文章中我們已經(jīng)看過了綁定的基礎(chǔ)知識,以及綁定數(shù)據(jù)源的選擇問題。在本篇文章中我們看下綁定時(shí)Target的現(xiàn)實(shí)的問題。

自定義顯示

很多時(shí)候我們的DataSource存儲(chǔ)的數(shù)據(jù)并不可以直接用來顯示,比如說我們對于Bool類型,需要顯示為“是”或則“否”而不是“True”,“False”,甚至有的時(shí)候我們需要將DataSource的某個(gè)屬性在多個(gè)不同的UI的地方進(jìn)行不同的顯示。

在我們進(jìn)行綁定的時(shí)候,綁定機(jī)制默認(rèn)選擇類型的ToString方法進(jìn)行綁定到UI上面,還好,在Silverlight中提供了Formatting的機(jī)制讓我們來自定義我們的顯示。我們可以通過Formatting來定義格式化我們的顯示,同時(shí)我們也可以通過Convert來進(jìn)行轉(zhuǎn)換,下面我們來看看Formatting部分。

Formatting&Converter

在我們編寫的代碼中,我們可以通過String.Format方法進(jìn)行一個(gè)值的格式化,在綁定時(shí)我們也可以使用,其語法類似于String.Format。比如我們我們希望將一個(gè)Decimal類型的顯示為¥2011,我們可以通過這種方式:

<TextBlock Text="{Binding Total,StringFormat=\{0:C\}}"></TextBlock>

?

可是大部分時(shí)候,簡單的Format對我們來說是不夠用的,更多時(shí)候我們需要Convert來轉(zhuǎn)換我們Source的值,比如說我們需要Bool值類型的顯示為否\是.我們在定義一個(gè)Convert時(shí)必須需要繼承于IValueConverter接口,在IValueConverter中有兩個(gè)方法:Convert、ConvertBack。Convert方法是指將將Source數(shù)據(jù)綁定到Target時(shí)轉(zhuǎn)換動(dòng)作,而ConvertBack是指將Target的數(shù)據(jù)返回到Source時(shí)的轉(zhuǎn)換。下面我們來定義一個(gè)BooleanConvert:

public class BooleanConvert : IValueConverter {public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){var booleanValue = Boolean.Parse(value.ToString());if (booleanValue) return "Yes";return "No";}public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){var strValue = value.ToString().ToLower();if (strValue.Equals("yes"))return true;return false;} }

我們看看如何使用,在原來的Person中增加了Married屬性:

private bool _Married; public bool Married { get { return _Married; }set {_Married = value;NotifyPropertyChanged("Married");} }

然后我們再資源中增加BooleanConver的引用:

<UserControl.Resources><local:BooleanConvert x:Key="BooleanConvert"></local:BooleanConvert></UserControl.Resources>

在ListBox中增加Married:

<TextBlock Text="Married:" FontSize="12" Margin="3,3,0,0" Grid.Column="2"></TextBlock> <TextBlock Text="{Binding Married,Converter={StaticResource BooleanConvert}}"FontSize="12" Margin="0,3,0,0" Grid.Column="3"></TextBlock>

運(yùn)行效果:

在有的時(shí)候我們會(huì)出現(xiàn)轉(zhuǎn)換錯(cuò)誤,這個(gè)時(shí)候我們需要提供默認(rèn)的fallback Value,下面我們看下兩個(gè)中特殊情況下的處理。

fallback values & null values

在綁定時(shí)候,總會(huì)出現(xiàn)錯(cuò)誤的情況,比如在一個(gè)屬性的Geter中發(fā)生錯(cuò)誤了等等,這個(gè)時(shí)候我們在綁定的表達(dá)式中指定下FallbackValue是非常有用的,我們可以這樣指定:

<TextBlock Text="{Binding Married,Converter={StaticResource BooleanConvert},FallbackValue=Error}"FontSize="12" Margin="0,3,0,0" Grid.Column="3"></TextBlock>

?

有的時(shí)候我們的源數(shù)據(jù)中是Null值的時(shí)候,我們也需要額外的進(jìn)行顯示,在表達(dá)式中,我們可以通過指定TargetNullValue:

<TextBlock Text="{Binding Married,Converter={StaticResource BooleanConvert},FallbackValue=Error,TargetNullValue=Miss}"FontSize="12" Margin="0,3,0,0" Grid.Column="3"></TextBlock>

?

總結(jié)

本篇文章中我們主要看過了數(shù)據(jù)綁定時(shí)的自定義顯示方面的內(nèi)容,下篇文章中會(huì)就數(shù)據(jù)模板進(jìn)行了解。

轉(zhuǎn)載于:https://www.cnblogs.com/Henllyee/archive/2011/08/07/Silverlight4-trip-Third.html

總結(jié)

以上是生活随笔為你收集整理的Silverlight 4之旅(三)数据绑定(中)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。