Silverlight中Calendar和DatePicker Bug 至解决办法

Sivlerlight日历控件Bug与修复

一:Calendar存在的Bug:

 

 

如图,选择“27“后,不松开鼠标,在控件外部松开,当鼠标再次进入日历控件时,将不断的激发日期选择事件;可能Calendar内部日期选择事件如下操作,当鼠标在一日期上按下,isDown为true,并激发日期更改事件,此时鼠标不松开移动一直激发日期选中更改事件。当鼠标在日历控件上松开时isDown=false。日期选择事件将停止激发。

解决办法:

      Calendar控件默认的MouseLeftButtonDown事件在日期上按下时,Handled被强制设置为True,不会激发鼠标左键按下事件。此时可添加鼠标左键事件,

 这样在MouseLeftButtonDown可接收到事件,上面的问题可以解决。

 

二:DatePicker控件设置为只读

 

  项目中用到datePicker控件,绑定给一个日期范围后,datePicker只能在指定日期范围内选值。但更改datePicker的Text值后会更改原有日期范围的显示;如:

 

当然我们会认为如果在KeyDown事件中使所有Key的Hander=True,那不就可以吗。试了不行,发现一个问题,凡是Silverlight的输入控件,如TextBox等,在框中如果有数据的话

BackSpace键和Delete将不激发KeyDown事件,没有对应数据时才会激发。经过测试,KeyUp事件会激发的。这里需要在keyUp中动手了,代码如下:

这里面主要是在KeyUp事件中,虽然Text改变,但当前选择日期没发生改变,将当前选择日期返回显示。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值