WPF- 关于自定义Calendar控件

由于项目对更改日期 时间的需要,接触了一下Calendar控件。结果发现在这么强大的控件的背后,微软其实并没有为开发人员留有很强的扩展性。

(项目要求的Calendar控件能对一些特定的日期进行特殊处理,如高亮,以及类似于Outlook的Calendar一样,可以编辑会议,提醒什么的。)

Calendar里有一些控件如:CalendarItem,CalendarButton,CalendarDayButton。这些控件都被定义成了sealed。所以当我们要对Calendar控件做一些自定义的时候,我们就不能按照对待普通的其他控件的方式对待它(常规做法是我们创建一个控件,然后继承我们需要自定义的控件,为其添加一些依赖属性什么的。。)。 所以剩下的解决方案是

1.创建一个扩展性更强的Calendar控件。

2.使用Converter处理。

对于方案1,那肯定是吃力不讨好,Calendar控件本身相当的复杂,自己创建一个类似的控件费时费力,而且肯定不免有许多Bug。因此剩下的我们最好是使用方案2(Charles Petzold在MSDN杂志中有一篇文章讲的就是这个,请参考:Customizing the New WPF Calendar Controls)。

对于方案2. 我现在是在Converter中定义了一些属性(一个DateTime的集合,一个String的集合),然后在上面提及的Sealed的控件的Template中通过Converter做一些处理。

 

有关Calendar控件的扩展,Codeproject上有一些文章,参考:

rudigrobler  Creating an Outlook Calendar using WPF 系列

David Veeneman 的 Extending the WPF Calendar Control

 

 

 

 

转载于:https://www.cnblogs.com/iwpf/p/3714617.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值