• 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'}”>(日前显示格式)

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

  • 相关阅读:
    Centos 7升级gcc版本和CXXABI_1.3.8' not found错误解决
    Websphere缓存问题
    K8S中文官档地址
    可视化vscode安装matplotlib工具
    如何下载zoom上别人录制的视频?
    马士兵23设计模式
    DDD 领域驱动
    UPX手动脱壳/程序脱壳
    切换jdk环境d的n种办法
    近期ctf*web*一览
  • 原文地址:https://www.cnblogs.com/infly123/p/bindingcon.html
Copyright © 2020-2023  润新知