学习silverLIght

现在开始学习silverlight.so I decide to regord my gain

1. 在xaml中,把一个倥件的属性的值,赋值另一个属性。

 

SelectedDate="{Binding ElementName=dpPaidDate, Path=DisplayDate}

如上,是通过bing来实现的,这样selectDate属性的值,就和属性DispalyDate的值是一样的。

由于对于DatePicker来说,DisplayDate的值初始化是当天,这样,当界面显示时,默认的日期就是当天。

 

2.关于UI,数据绑定的后,验证界面输入的问题。

场景:

                   如果将一个值类型字段绑定到一个元素上并开启数据验证功能,并为这个字段加上不能为空的验证。

        正常情况下清空输入应该返回输入不能为空的提示,但是实际情况是无论怎样操作,一旦对值类型的字段做清空操作得到的验证提示都是 

“input string was not a correct format.”(silverlight4不存在该bug)

 

异常原因:

         在绑定字段更新的时候,任何从ui输入更新到目标数据源异常默认情况下是被sl内部吃掉的,但是一旦开启了数据验证就会被验证控件捕获。

这里的提示就是空值转换成数据源中的值类型时导致的异常。

 

解决方案:

    通过上面的猜想,之前认为把数据源的这个值类型改为可空类型就可以了,但是尝试了一下还是报同样的提示。然后给这个字段加上了个自定的convert类,

观察其在ConverBack时,得到的value,发现原来在清空操作的时,返回的value结构是string.Empty而不是null,这里需要手动的将string.Empty转换为null,在赋值给可空类型才能正常转换。

 

 代码如下:

    Model:

      

 [Validation(typeof(LessOrEqualThanFulfillTransitQtyValidator))]
        [Validation(ValidatorTypes.Interger)]
        [Validation(ValidatorTypes.Required)]
        public new int? Quantity       //在silverlight3 下对值类型做不能为空的验证时,一定要将字段定义为可空类型
        {
            get
            {
                return base.Quantity;
            }
 
            set
            {
                base.Quantity = value;
            }
    }

 

ValueConverter:

  

  public class NullAbledIntToIntConvernt : IValueConverter
    {
 
        #region IValueConverter Members
 
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                value = 0;
            }
 
            return value;
        }
 
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
           //保证可空类型的转化正常
            if (value == null || string.IsNullOrEmpty(value.ToString().Trim()))
            {
                value = null;
            }
 
            return value;
        }
 
        #endregion
 }

 

Xaml:

//在xaml为响应的字段加上自定义的converter

  //定义一个转化类的实例

    <UserControl.Resources>

        <local:NullAbledIntToIntConvernt x:Key="IntConverter"/>

    </UserControl.Resources>

 

  <TextBox     Text="{Binding Quantity, Mode=TwoWay,ValidatesOnExceptions=True, NotifyOnValidationError=True,Converter={StaticResource IntConverter}}" 

                                                 Margin="5 0 0 0" HorizontalAlignment="Left"

                                                 MaxLength="9"

                                                 KeyDown="TextBox_KeyDown"

                                                 Style="{StaticResource ShortTextBoxStyle}"></TextBox>

 

3.扩展验证属性!

把下面的代码写到服务端的以.shared.cs结尾命名的文件中,则客户端会自动生成一样的文件,方便使用。

public class DecimalValidator : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
             if ((value != null) && !string.IsNullOrEmpty(value.ToString().Trim()))
            {
                decimal outValue;
                if (!decimal.TryParse(value.ToString(), out outValue))
                {
                    return new ValidationResult(ErrorMessage, new string[] { validationContext.MemberName });
                }
                return ValidationResult.Success;
            }
             return new ValidationResult(ErrorMessage, new string[] { validationContext.MemberName });
        }
 
    }

 

这样就可以新建的验证属性attribute

如:    [DecimalValidator(ErrorMessage = "This is not a decimal.")]       

      

  public string CustomerNumber
        {
            get;
            set;
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值