silverlight 绑定数据输出格式的设定

   最近做的silverlight项目中要求将TextBox与Slider进行TwoWay绑定,但因为silder中的Value值默认为double型,发现TextBox中显示的值总是有很长的小数,经查询发现绑定的数据可以通过silverlight里提供的IValueConverter接口来实现转换:

  后台:

//将double转换成int
    public class IntConverter : IValueConverter
    {
          public object Convert(object Value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (Value == null)
            {
                return Value = 0;
            }
            else
            {
                try
                {
                    return (Value.ToString().Split('.')[0]);
                }
                catch (Exception ex)
                {
                    return 0;
                }
            }
        }
        public object ConvertBack(object Value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return Value;
        }
    }

Xmal:
  首先引入当前项目:

<controls:ChildWindow x:Class="MySL.PopWindow.ParameterSetting"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:my="clr-namespace:MySL"
           xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
           Width="653" Height="410" 
           Title="ChildWindow" Name="thisParameterSetting">
    <controls:ChildWindow.Resources>
        <my:IntConverter x:Key="InConvert"></my:IntConverter>
    </controls:ChildWindow.Resources>

   然后在TextBox中加入:

<TextBox Grid.Row="3" Grid.Column="2" Height="23" Text="{Binding Value,ElementName=sld_SATURATION,Mode=TwoWay,Converter={StaticResource InConvert}}"></TextBox>

这样silder滑动时显示的就是整数了,IValueConverter接口可以实现很灵活的输出。不过后来发现还有更简单的方法,那就是用到绑定中的StringFormat进行格式化输出:

<TextBox Grid.Row="0" Grid.Column="2" Height="23" Text="{Binding Value,ElementName=sld_SHARP,Mode=TwoWay,StringFormat='\{0:F0\}'}"></TextBox>

  后来经查找发现StringFormat可以轻松的实现绑定数据中各种格式化的输出,例如:

  <Textblock1 Text=“{Binding Name, StringFormat=’用户名: \{0\}’}”>(绑定数据中加入字符串)

  <sdk:DataGridTextColumn Header="版本" Binding="{Binding dwDevVersion,StringFormat='\{0:X4\}'}"(以十六进制输出,显示四位数)

   <Textblock1 Text=“{Binding datetime, StringFormat='MMM d, yyy'}”>(日前显示格式)

具体用法有很多,大家可以去网上搜索

原文地址:https://www.cnblogs.com/infly123/p/bindingcon.html