• 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", “默认”

    Image00251

    SelectedDateFormat="Long"

    Image00252

    而如果需要输出“April 01, 2011”格式,则无法使用SelectedDateFormat控制其格式,这时可以使用StringFormat属性完成需求。

    <toolkit:DatePicker SelectedDate="{Binding DemoDate,Mode=TwoWay, StringFormat='MMM d, yyyy'}" />

    Image00253

    再例如,早期实现一段文字绑定信息需要按照以下格式操作:

    <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>
     56 <StackPanel Orientation="Vertical" >
     57 <TextBlock Text="StringFormat和数字演示" Margin="8" FontSize="16"/>
     58 <Border BorderBrush="LightGray" BorderThickness="1" Width="300" Margin="5" HorizontalAlignment="Left">
     59 <StackPanel Orientation="Vertical" Margin="5">
     60 <Grid >
     61 <Grid.RowDefinitions>
     62 <RowDefinition Height="Auto"/>
     63 <RowDefinition Height="Auto"/>
     64 </Grid.RowDefinitions>
     65 <Grid.ColumnDefinitions>
     66 <ColumnDefinition Width="Auto" MinWidth="18"/>
     67 <ColumnDefinition/>
     68 <ColumnDefinition Width="Auto" MinWidth="28"/>
     69 </Grid.ColumnDefinitions>
     70 <TextBlock Text="1" HorizontalAlignment="Left" d:LayoutOverrides="Height" />
     71 <TextBlock Text="100,000" d:LayoutOverrides="Width, Height" Grid.Column="2" Margin="0" />
     72 <Slider x:Name="BigNumSlider" Margin="0" d:LayoutOverrides="Height" Grid.ColumnSpan="3" Grid.Row="1" Maximum="100000" Minimum="1" Value="50000"/>
     73 </Grid>
     74 <TextBlock TextWrapping="Wrap" Text="StringFormat=c" FontWeight="Bold" Margin="0,4,0,2"/>
     75 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=c}" Margin="8,0"/>
     76 <TextBlock TextWrapping="Wrap" Text="StringFormat=目前拥有现金 \{0:C0\}" FontWeight="Bold" Margin="0,4,0,2"/>
     77 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=目前拥有现金 \{0:C0\}}" Margin="8,0"/>
     78 <TextBlock TextWrapping="Wrap" Text="StringFormat=e" FontWeight="Bold" Margin="0,4,0,2"/>
     79 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=e}" Margin="8,0"/>
     80 <TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:E4\}" FontWeight="Bold" Margin="0,4,0,2"/>
     81 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=\{0:E4\}}" Margin="8,0"/>
     82 <TextBlock TextWrapping="Wrap" Text="StringFormat=n" FontWeight="Bold" Margin="0,4,0,2"/>
     83 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=n}" Margin="8,0"/>
     84 <TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:N0\}" FontWeight="Bold" Margin="0,4,0,2"/>
     85 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat=\{0:N0\}}" Margin="8,0"/>
     86 <TextBlock TextWrapping="Wrap" Text="StringFormat='###,###.##'" FontWeight="Bold" Margin="0,4,0,2"/>
     87 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider, Mode=TwoWay, StringFormat='###,###.##'}" Margin="8,0" />
     88 </StackPanel>
     89 </Border>
     90 <Border BorderBrush="LightGray" BorderThickness="1" Width="300" Margin="5" HorizontalAlignment="Left">
     91 <StackPanel Orientation="Vertical" Margin="5">
     92 <Grid >
     93 <Grid.RowDefinitions>
     94 <RowDefinition Height="Auto"/>
     95 <RowDefinition Height="Auto"/>
     96 </Grid.RowDefinitions>
     97 <Grid.ColumnDefinitions>
     98 <ColumnDefinition Width="Auto" MinWidth="18"/>
     99 <ColumnDefinition/>
    100 <ColumnDefinition Width="Auto" MinWidth="28"/>
    101 </Grid.ColumnDefinitions>
    102 <TextBlock Text="-1" HorizontalAlignment="Left" d:LayoutOverrides="Height" />
    103 <TextBlock Text="1" d:LayoutOverrides="Width, Height" Grid.Column="2" Margin="0" />
    104 <Slider x:Name="BigNumSlider1" Margin="0" d:LayoutOverrides="Height" Grid.ColumnSpan="3" Grid.Row="1" Maximum="1" Minimum="-1" Value="0.2" LargeChange="0.1" SmallChange="0.01"/>
    105 </Grid>
    106 <TextBlock TextWrapping="Wrap" Text="StringFormat=n" FontWeight="Bold" Margin="0,4,0,2"/>
    107 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=n}" Margin="8,0"/>
    108 <TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:N4\}" FontWeight="Bold" Margin="0,4,0,2"/>
    109 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=\{0:N4\}}" Margin="8,0"/>
    110 <TextBlock TextWrapping="Wrap" Text="StringFormat=p" FontWeight="Bold" Margin="0,4,0,2"/>
    111 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=p}" Margin="8,0"/>
    112 <TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:P0\}" FontWeight="Bold" Margin="0,4,0,2"/>
    113 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=\{0:P0\}}" Margin="8,0"/>
    114 <TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:E5\}" FontWeight="Bold" Margin="0,4,0,2"/>
    115 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=\{0:E5\}}" Margin="8,0"/>
    116 <TextBlock TextWrapping="Wrap" Text="StringFormat=\{0:C3\}" FontWeight="Bold" Margin="0,4,0,2"/>
    117 <TextBox TextWrapping="Wrap" Text="{Binding Value, ElementName=BigNumSlider1, Mode=TwoWay, StringFormat=\{0:C3\}}" Margin="8,0"/>
    118 </StackPanel>
    119 </Border>
    120 </StackPanel>
    121 
    122 </StackPanel>
    123 </ScrollViewer>
    124 </Grid>

     

    源代码下载

    在线演示

    欢迎大家加入“专注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人


  • 相关阅读:
    位置匹配
    匹配重复
    使用元字符
    匹配一组字符
    匹配任意单个字符
    python-全局替换程序
    python37-encode与decode
    python37-能检测文件编码的模块
    super方法
    类-易错题
  • 原文地址:https://www.cnblogs.com/jv9/p/2028857.html
Copyright © 2020-2023  润新知