博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight 4常用StringFormat格式总结
阅读量:6658 次
发布时间:2019-06-25

本文共 6754 字,大约阅读时间需要 22 分钟。

 在Silverlight项目中,经常会根据需求的不同,提供不同的字符格式到客户端。这篇文章总结了目前Silverlight 4常用StringFormat绑定字符格式,方便大家在以后的开发中调用参考。

 

早期的格式转换方法

在Silverlight 4之前的版本,通常修改字符格式是通过实现IValueConverter接口,在IValueConverter接口中包含有两个方法:

1. Convert, 在绑定源数据传送到客户端显示前,转换修改数据;

2. ConvertBack,在目标数据传送到绑定源数据前,转换修改数据,该方法仅被用于“TwoWay”绑定模式;

例如,根据布尔型判断实现控件是否显示在客户端,下面是一个简单的转换代码,通过实现IValueConverter,判断控件Visibility属性值。

 

 1 public class VisibilityConverter : IValueConverter
 2 
 3 {

 4 
 5 public object Convert(object value,Type targetType,object parameter,CultureInfo culture)
 6 
 7 {

 8 
 9 bool visibility = (bool)value;
10 
11 return visibility ? Visibility.Visible : Visibility.Collapsed;
12 
13 }
14 
15 public object ConvertBack(object value,Type targetType,object parameter,CultureInfo culture)
16 
17 {

18 
19 Visibility visibility = (Visibility)value;
20 
21 return (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=”当前登录用户: ”/>

<TextBlock Text=“{Binding Name}”/>

输出: 当前登录用户Jv9

在Silverlight 4中使用StringFormat属性,可以简单的实现如下:

<TextBlock Text=“{Binding Name, StringFormat=’当前登录用户: \{0\}’}”>

这样实现简单而又方便。

对于StringFormat属性的使用方法还有很多,下面使用实例演示常用的属性:

 

  1 
<
Grid 
x:Name
="LayoutRoot"
>

  2 
<
ScrollViewer 
x:Name
="PageScrollViewer"
 Style
="{StaticResource PageScrollViewerStyle}"
>

  3 
<
StackPanel 
Orientation
="Horizontal"
>

  4 
<
StackPanel 
x:Name
="ContentStackPanel"
>

  5 
<
TextBlock 
FontSize
="16"
 TextWrapping
="Wrap"
 Text
="StringFormat和字符串格式"
 Margin
="8"
/>

  6 
<
Border 
BorderBrush
="LightGray"
 BorderThickness
="1"
 Width
="300"
 Margin
="5"
 HorizontalAlignment
="Left"
>

  7 
<
StackPanel 
Orientation
="Vertical"
 Margin
="5"
 
>

  8 
<
TextBox 
x:Name
="txtSource"
 Width
="125"
 HorizontalAlignment
="Left"
/>

  9 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat='正在输入 &quot;\{0\}&quot;."
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 10 
<
TextBlock 
Text
="{Binding Text, ElementName=txtSource, StringFormat='正在输入 &quot;\{0\}&quot;.'}"
 TextWrapping
="Wrap"
 Margin
="0,0,0,4"
/>

 11 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=\{0\,20\}"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 12 
<
TextBlock 
Text
="{Binding Text, ElementName=txtSource, StringFormat=\{0\,20\}}"
 TextWrapping
="Wrap"
 Margin
="0,0,0,4"
 
/>

 13 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=\{0\,-20\}"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 14 
<
TextBlock 
Text
="{Binding Text, ElementName=txtSource, StringFormat=\{0\,-20\}}"
 TextWrapping
="Wrap"
 Margin
="0,0,0,4"
/>

 15 
</
StackPanel
>

 16 
</
Border
>

 17 

 18 
<
StackPanel 
x:Name
="DatePanel"
>

 19 
<
TextBlock 
Text
="StringFormat和日期格式"
 Margin
="8"
 FontSize
="16"
 
/>

 20 
<
Border 
BorderBrush
="LightGray"
 BorderThickness
="1"
 Width
="300"
 Margin
="5"
 HorizontalAlignment
="Left"
>

 21 
<
StackPanel 
DataContext
="{StaticResource SampleDate}"
>

 22 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=f"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 23 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=f}"
 Margin
="8,0"
 
/>

 24 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=F"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 25 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=F}"
 Margin
="8,0"
 
/>

 26 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=g"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 27 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=g}"
 Margin
="8,0"
 
/>

 28 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=G"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 29 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=G}"
 Margin
="8,0"
 
/>

 30 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=m"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 31 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=m}"
 Margin
="8,0"
 
/>

 32 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=y"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 33 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=y}"
 Margin
="8,0"
 
/>

 34 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=t"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 35 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=t}"
 Margin
="8,0"
 
/>

 36 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=T"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 37 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=T}"
 Margin
="8,0"
 
/>

 38 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=u"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 39 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=u}"
 Margin
="8,0"
 
/>

 40 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=o"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 41 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=o}"
 Margin
="8,0"
 
/>

 42 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=MM/dd/yy"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 43 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=MM/dd/yy}"
 Margin
="8,0"
/>

 44 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=MMMM dd\, yyyy g"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 45 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=MMMM dd\, yyyy g}"
 Margin
="8,0"
 
/>

 46 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=hh:mm:ss.fff tt"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 47 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=hh:mm:ss.fff tt}"
 Margin
="8,0"
 
/>

 48 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat=\{0:r\}"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 49 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat=\{0:r\}}"
 Margin
="8,0"
 
/>

 50 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="StringFormat='MMM d, yyyy'"
 FontWeight
="Bold"
 Margin
="0,4,0,2"
/>

 51 
<
TextBlock 
TextWrapping
="Wrap"
 Text
="{Binding CurrentDateTime, StringFormat='MMM d, yyyy'}"
 Margin
="8,0"
 
/>

 52 
</
StackPanel
>

 53 
</
Border
>
 
 54 
</
StackPanel
>

 55 
</
StackPanel
>

由于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人

本文转自 51CTO博客,原文链接:http://blog.51cto.com/kevinfan/553644 ,如需转载请自行联系原作者

你可能感兴趣的文章
软件测试,需要所有人的努力
查看>>
IO学习总结一
查看>>
Cenots 7.0编译安装libiconv-1.14时的故障
查看>>
如何一次创建大量用户
查看>>
dmidecode+awk搜集内存容量和插槽对应关系
查看>>
手工安装桌面环境;备忘下。
查看>>
mysql简单性能排查
查看>>
Photoshop制作一只可爱的卡通小鸟
查看>>
IBM HP DELL LENOVO服务器接入交换机网络规划
查看>>
Java程序运行时间计算
查看>>
【Struts 2.x】调用addActionError导致异常
查看>>
Windows Server 2012 云硬盘如何挂载
查看>>
Cacti安装
查看>>
中信国际电讯部署F5解决方案优化LTE漫游服务
查看>>
bind+mysql+dlz
查看>>
网络不给力呀
查看>>
分析php代码报502的错
查看>>
微信企业号引入强大应用合作,开创企业移动办公新的蓝
查看>>
MFC编程小技巧-更新中
查看>>
创建ssl 证书
查看>>