重写数据绑定转换器(字符转整数,字符转实数)

重写数据绑定转换器(字符转整数,字符转实数)

使用sqlite数据库过程中,不管数据库中定义的是什么类型都能够转换过去,这样会对后续程序编写造成困难。数据输入、修改通过textbox的text binding类中的对应属性实现,更新数据库时将类中对应属性的值update至数据库中。因此通过重写textbox来保证,输入数据的类型符合要求。

1.新建类,继承IValueConverter

public class StringToDoubleConverter : IValueConverter
    {
        /// <summary>
        /// 数据库的值转换到textbox的text
        /// </summary>
        /// <param name="value">数据库参数</param>
        /// <param name="targetType"></param>
        /// <param name="parameter"></param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value.ToString();
        }
        /// <summary>
        /// textbox转为到类double对象
        /// </summary>
        /// <param name="value">textbox.text</param>
        /// <param name="targetType">int</param>
        /// <param name="parameter"></param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            try
            {
                double c = ((IConvertible)value).ToDouble(null);
                if (c >= 0)
                {
                    return c;
                }
                else
                {
                    MessageBox.Show("请输入正实数");
                    return 0;
                }

            }
            catch (Exception)
            {
                MessageBox.Show("输入有误,请输入正实数");
                return "0";
            }
        }
    }

2.xml文件中引用资源

  <Window.Resources>
        <local:StringToIntConverter x:Key="s2i"/>
        <local:StringToDoubleConverter x:Key="s2d"/>       
    </Window.Resources>    
 <TextBox Text="{Binding ShipLength , Converter={StaticResource s2d}}" ></TextBox>

3.功能实现

textbox中输入其他类型的字符串,无法转换到实数时会返回0,且弹出提示窗口。数值小于0时同样如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值