Silverlight 4常用StringFormat格式总结
?在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='正在輸入?"\{0\}"."?FontWeight="Bold"?Margin="0,4,0,2"/>
?10?<TextBlock?Text="{Binding?Text,?ElementName=txtSource,?StringFormat='正在輸入?"\{0\}".'}"?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人
總結
以上是生活随笔為你收集整理的Silverlight 4常用StringFormat格式总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu启动时自动挂载windows
- 下一篇: Clapack安装