
XamDateTimeEditor で表示されるカレンダーの土曜、日曜の背景色および文字色をカスタマイズ方法をご紹介します。
実装方法
XamDateTimeEditor のカレンダー部分の日付コントロールは CalendarDay コントロールにより、表現しています。
土曜、日曜の表現方法をカスタマイズするために、CalendarDay の背景色(Background)および文字色(Foreground)を設定します。
<igEditors:XamDateTimeEditor >
<igEditors:XamDateTimeEditor.Resources>
<Style TargetType="{x:Type igEditors:CalendarDay}">
<!-- 背景色を変更するコンバーター、土曜は背景色:青。日曜は背景色:赤に変換 -->
<Setter Property="Background"
Value="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource WeekendToBackgroundConverter}}" />
<!-- 背景色を変更するコンバーター、土曜、日曜は文字色:白に変換 -->
<Setter Property="Foreground"
Value="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource WeekendToForegroundConverter}}" />
</Style>
</igEditors:XamDateTimeEditor.Resources>
</igEditors:XamDateTimeEditor>
また、土曜、日曜の判定には、コンバーターにて判定を行います。
/// <summary>
/// カレンダー日付から、土曜、日曜の背景色を変換するコンバーター
/// </summary>
public class WeekendToBackgroundConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// 土曜
if ((value as CalendarDay).StartDate.DayOfWeek == DayOfWeek.Saturday)
{
return Brushes.Blue;
}
// 日曜
else if ((value as CalendarDay).StartDate.DayOfWeek == DayOfWeek.Sunday)
{
return Brushes.Red;
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}