学习silverLIght
来源:互联网 发布:淘宝一分钱商品在哪里 编辑:程序博客网 时间:2024/05/01 01:42
现在开始学习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; }
- silverlight学习
- 学习Silverlight
- 学习silverlight
- 学习silverlight
- 学习silverlight
- silverlight 学习
- 学习silverLIght
- Silverlight 学习
- silverlight 学习
- Silverlight 学习网站集锦
- silverlight 学习网站
- 学习Silverlight网址推荐
- silverlight学习笔记(1)
- Silverlight 2.0学习资源
- silverlight 学习资料系列
- Silverlight 最佳学习Blog
- SilverLight 的学习
- Silverlight 学习札记
- SQL注入攻击
- AIX系统管理(一)
- 无法载入mcrypt扩展,请检查PHP配置
- 《观止》书评——一本读不完的书
- c#关键字及ref和out
- 学习silverLIght
- wcf-微软.net数据通讯开发模型
- Windows下卸载postgres之后二次安装的问题
- 关于COCOS2D加入Game center屏幕翻转的问题
- c#调用汇编
- oracle 建立自增字段 触发器未通过验证
- C语言中return,exit,和break
- JPA入门例子(采用JPA的hibernate实现版本)
- 基于NIO实现非阻塞Socket编程