在Silverlight项目中,经常会根据需求的不同,提供不同的字符格式到客户端。这篇文章总结了目前Silverlight 4常用StringFormat绑定字符格式,方便大家在以后的开发中调用参考。
早期的格式转换方法
在Silverlight 4之前的版本,通常修改字符格式是通过实现IValueConverter接口,在IValueConverter接口中包含有两个方法:
1. Convert, 在绑定源数据传送到客户端显示前,转换修改数据;
2. ConvertBack,在目标数据传送到绑定源数据前,转换修改数据,该方法仅被用于“TwoWay”绑定模式;
例如,根据布尔型判断实现控件是否显示在客户端,下面是一个简单的转换代码,通过实现IValueConverter,判断控件Visibility属性值。
1
public
class
VisibilityConverter : IValueConverter
2
3
{
4
5
object
Convert(
value,Type targettype,
parameter,CultureInfo culture)
6
7
8
9
bool
visibility
=
(
)value;
10
11
return
?
Visibility.Visible : Visibility.Collapsed;
12
13
}
14
15
ConvertBack(
16
17
18
19
Visibility visibility
(Visibility)value;
20
21
(visibility
==
Visibility.Visible);
22
23
24
25
}
Silverlight 4的StringFormat属性
在Silverlight 4中,数据绑定SDK提供一个“StringFormat”的属性,该属性允许开发人员自由定义输出字符格式,例如,DataPicker控件,该控件提供SelectedDateFormat属性,控制其输出格式“短格式”或“长格式”。
SelectedDateFormat="Short",“默认”
SelectedDateFormat="Long"
而如果需要输出“April 01,2011”格式,则无法使用SelectedDateFormat控制其格式,这时可以使用StringFormat属性完成需求。
<toolkit:DatePicker SelectedDate="{Binding DemoDate,Mode=TwoWay,StringFormat='MMM d,yyyy'}" />
再例如,早期实现一段文字绑定信息需要按照以下格式操作:
<TextBlock Text=“{Binding Name}”/>
在Silverlight 4中使用StringFormat属性,可以简单的实现如下:
<TextBlock Text=“{Binding Name,StringFormat=’当前登录用户: \{0\}’}”>
这样实现简单而又方便。
对于StringFormat属性的使用方法还有很多,下面使用实例演示常用的属性:
2 ScrollViewer ="PageScrollViewer" Style ="{StaticResource PageScrollViewerStyle}" 3 StackPanel Orientation ="Horizontal" 4 ="ContentStackPanel" 5 TextBlock FontSize ="16" textwrapping ="Wrap" Text ="StringFormat和字符串格式" Margin ="8" /> 6 Border BorderBrush ="LightGray" BorderThickness ="1" Width ="300" ="5" HorizontalAlignment ="Left" 7 ="Vertical" 8 TextBox ="txtSource" ="125" 9 textwrapping ="StringFormat='正在输入 "\{0\}"." FontWeight ="Bold" ="0,4,2" 10 Text ="{Binding Text, ElementName=txtSource, StringFormat='正在输入 "\{0\}".'}" 11 ="StringFormat=\{0\,20\}" 12 13 14 15 </ StackPanel 16 Border 17 18 ="DatePanel" 19 ="StringFormat和日期格式" ="8" FontSize 20 21 DataContext ="{StaticResource SampleDate}" 22 ="StringFormat=f" 23 ="{Binding CurrentDateTime, StringFormat=f}" ="8,0" 24 ="StringFormat=F" 25 26 ="StringFormat=g" 27 28 ="StringFormat=G" 29 30 ="StringFormat=m" 31 32 ="StringFormat=y" 33 34 ="StringFormat=t" 35 36 ="StringFormat=T" 37 38 ="StringFormat=u" 39 40 ="StringFormat=o" 41 42 ="StringFormat=MM/dd/yy" 43 44 ="StringFormat=MMMM dd\, yyyy g" 45 46 ="StringFormat=hh:mm:ss.fff tt" 47 48 ="StringFormat=\{0:r\}" 49 50 ="StringFormat='MMM d, yyyy'" 51 52 53
54 55
由于51cto博文字数限制这里只能贴出部分源代码,更多代码请下载源代码。
欢迎大家加入“专注Silverlight”QQ技术群,欢迎大家加入一起学习讨论Silverlight&WPF&WidNows Phone开发技术。 22308706(一群) 超级群500人 37891947(二群) 超级群500人 100844510(三群) 高级群200人 32679922(四群) 超级群500人 23413513(五群) 高级群200人 32679955(六群) 超级群500人 61267622(七群) 超级群500人 88585140(八群) 超级群500人 128043302(九群 企业应用开发推荐群) 高级群200人 101364438(十群) 超级群500人 68435160(十一群 企业应用开发推荐群)超级群500人
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。