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
總結
以上是生活随笔為你收集整理的WPF- 关于自定义Calendar控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 序列化流
- 下一篇: XML基础——extensible ma