CanYou1 发表于 2015-9-1 21:30:00

C1NumericBox内容为空时,转换的值不对



Alice,如上Demo所示,当C1NumericBox绑定double?类型数据时,出了2个问题,是我们项目里急需解决的,但目前找不到好办法,向您求救了。
1,页面刚加载时,由于所绑定的变量Score的值是null,所以C1NumericBox文本框内的值也应是空,而现在却是0
2,当把0删除掉后,所得的Score值是NaN,而不是null,而实际上既然清空了文本框,那Score的值也应为null

希望您能帮助到我们,非常感谢!

Alice 发表于 2015-9-2 09:25:00

回复 1楼CanYou1的帖子

谢谢提供的demo。
从你的描述来看,你的问题和我们之前在另一个帖子讨论的问题,原理基本类似。
http://gcdn.gcpowertools.com.cn/showtopic-18027.html
微软提供的TextBox类型是支持null的,但是又不允许绑定一个null值。
在将值删除为null的时候,微软认为是非法值,不会触发绑定,因此这个null的值不能被存入绑定的对应字段中。这是微软的bug。
而在之前我们也提供了一个方案解决这个问题。

如果我的理解有误,请指出。

CanYou1 发表于 2015-9-2 14:24:00

回复 2楼Alice的帖子

Alice,你试过http://gcdn.gcpowertools.com.cn/showtopic-18027.html这里面你给的转换器吗?我是试了后不行哦,才问你的。

CanYou1 发表于 2015-9-2 17:00:00

回复 2楼Alice的帖子

按你的说法,我把你之前给的转换器应用到了Demo里,但还是不行。Demo如下:


Alice 发表于 2015-9-2 18:49:00

回复 4楼CanYou1的帖子

谢谢提供的Demo。
你的问题已经收到。
需要测试后,预计下周下班给你反馈。

Alice 发表于 2015-9-7 16:10:00

回复 4楼CanYou1的帖子

更新了4楼示例中的代码,改了NullableCoverter类来满足你的需求,代码参考:
public class NullableConverter : IValueConverter
    {
      #region IValueConverter Members
      public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
      {
            if (value == null)
            {
                return double.NaN;
            }
            return value;
      }


      public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
      {
            if (value.Equals(double.NaN))
            {
                return null;
            }
            return value;
      }
      #endregion
    }

CanYou1 发表于 2015-9-7 16:19:00

回复 6楼Alice的帖子

OK,谢谢;不过就是晚了点,因为假期里我已经弄出了跟你这一模一样的转换器:D,不过还是非常感谢!问题解决。

Alice 发表于 2015-9-7 17:02:00

回复 7楼CanYou1的帖子

好的,谢谢反馈。
此问题关闭,如果有新问题请开新帖。
页: [1]
查看完整版本: C1NumericBox内容为空时,转换的值不对