C1NumericBox用于显示数值类型数据,可以设置显示的数值范围,用于控制用户输入行为。在绑定数据源时,默认情况下,数值如果 null,C1NumericBox会自动转换为 0,那么如何实现当数值为 null 时,C1NumericBox中的文本也为空呢?

本篇博文将记录如何通过实现 IValueConverter 来实现这个功能。

下面分布讲解:

1.这里设置一个简单的数据源:

    public class Student
    {
        public object Score { get; set; }
    }

 

2.实现 IValueConverter 接口,在 Convert 方法中判断传入值,如果是 null 则返回 double.NaN:

    public class NumericBoxConverter : IValueConverter
    {
 
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
                return double.NaN;
 
            return value;
        }
 
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return value;
        }
    }

 

3.设置 Converter double.NaN 给 C1NumericBox ,这里需要定义 Binding,并且设置 AllowNull 属性为 true :

            Binding binding = new Binding();
            binding.Source = st1;
            binding.Path = new PropertyPath("Score");
            binding.Converter = new NumericBoxConverter();
            c1numberic1.AllowNull = true;
            c1numberic1.SetBinding(C1.Silverlight.C1NumericBox.ValueProperty, binding);

 

效果图:

image

Demo 下载:

VS2013+Silverlight 5.0 + Studio for Silverlight 2013V3 + C#

 

更多关于 Studio for Silverlight 的功能,请参考:

http://www.grapecity.com.cn/developer/c1_sl_overview.htm