ページ

2009年5月20日水曜日

[Silverlight] カレンダーコントロールの祝日の背景色を変える

How to customize holiday appearance in the Silverlight Calendar [Jason Cooke]
Silverlight のカレンダーコントロールの祝日の背景色を変える方法が解説されています。
ただ、これはいろんな場合に応用できる方法ですので、カレンダーだとか祝日だとかはあんまり関係なかったりします。

まず、System.Windows.Data.IValueConverter を実装したコンバータを用意しておきます。
こいつは日付を受け取り、祝日だったらオレンジを、以外なら白を返します。
XAML 上では Resources でコンバータを取り込んでやって、あとはカレンダーコントロールのテンプレートを差し替えて背景色を決めるのにコンバータを使うようにしてやれば OK です。

同じ要領で何かを何かに変換するコンバータを作ってテンプレートを差し替えてやれば結構いろいろなことができそうですね。
むしろ、どのコントロールがどんなスタイル・テンプレートを持っているのかわかりにくい方が問題になるかも。
今回のカレンダーコントロールにしても 「カレンダーのそれぞれの日が CalendarDayButton になってて Grid で描かれてる」ってことを知ってれば 「じゃあその Grid の Background を変えればいいかな」 と発想できますが、そういったことを知らないとまずはそれらを調べるところから始めないといけませんからね。
今回のカレンダーコントロールのように Silverlight Toolkit に含まれているコントロールであれば、Toolkit のソース・XAML を眺めてみるってのもいいかもしれません。
けど、個人的には Silverlight Spy で中身を覗いちゃうのが一番わかりやすいような気がしてます。


0 件のコメント:

コメントを投稿