リサイズはクリックかドラッグ

祝日定義ファイルを利用する

ドロップダウンカレンダーで表示される祝日の設定は、リソースディクショナリ形式の定義ファイルとして利用することができます。定義ファイルは、他のプロジェクトやユーザーなどで再利用が可能です。

祝日定義ファイル

祝日定義ファイルは、休日が定義されているリソースディクショナリ形式の XAML ファイルです。日付コントロールのドロップダウンカレンダー、あるいはドロップダウンカレンダーコントロールで、この定義ファイルを参照することで、コーディングやプロパティの設定なしに、簡単に祝日を設定することができます。

InputMan for WPF には、サンプルとして国民の祝日があらかじめ登録された祝日定義ファイルが付属しています。サンプルの祝日定義ファイルは、InputMan for WPF の製品インストールフォルダ内の Data フォルダの「NationalHolidayDictionary.xaml」です。

祝日定義ファイルでは、休日設定グループに対して「MyHolidayGroup」というキー名をつけており、このキー名を使用してリソースから休日設定のリソースを参照できます。

なお、サンプルの祝日定義ファイルには、次の注意点があります。

  • 春分の日と秋分の日について
    定義ファイルに登録されている春分の日と秋分の日は 1950 年から 2099 年まで登録されています。また、これらの日付は天文学に基づく計算から算出されていますが、実際の祝日とは異なる可能性があります。春分の日と秋分の日は、毎年2月に翌年分が閣議決定され、官報によって公布されます。
  • ハッピーマンデーについて
    成人の日、敬老の日は、祝日改正法に基づいた日付で登録されています。よって、法律改正前の暦については、成人の日、敬老の日が異なります。
  • 天皇の即位の日、即位礼正殿の儀の行われる日について
    天皇陛下即位にともない、2019年5月1日と2019年10月22日は祝日となります。また祝日法第3条第3項により、2019年4月30日と2019年5月2日も休日となります。定義ファイルには天皇陛下即位に関連した祝日は臨時休業日(ForceHoliday)で登録されています。
  • 天皇誕生日について
    天皇陛下即位にあわせ、2020年より天皇誕生日が変更となります。定義ファイルには1989年から2018年までの天皇誕生日を12月23日、2020年以降は2月23日として臨時休業日(ForceHoliday)で登録されています。
  • 海の日、体育の日(スポーツの日)について
    2020年の東京オリンピック/東京パラリンピックのため、2020年の海の日と体育の日が変更されます。また2020年以降は体育の日は「スポーツの日」に名称変更になります。これらの対応のため、海の日と体育の日(スポーツの日)は臨時休業日(ForceHoliday)で登録されています。
  • 山の日について
    山の日は2016年以降に施行されるため、定義ファイルには2016年から2099年まで登録されています。
祝日定義ファイルの利用方法

祝日定義ファイルを利用する場合は、以下の手順に従います。

  1. 祝日定義ファイルをプロジェクトに含めます。

  2. ページやユーザーコントロールの Resources プロパティで参照されるリソースディクショナリに祝日定義ファイルを追加します。

    以下のサンプルコードは、UserControl のリソースディクショナリに対して祝日定義ファイルをマージします。

    XAML
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="NationalHolidayDictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
  3. 日付コントロールのドロップダウンカレンダーあるいはドロップダウンカレンダーコントロールの HolidaySetting プロパティに祝日定義ファイルのリソースを設定します。

    以下のサンプルコードは、日付コントロールのドロップダウンカレンダーに対して祝日定義ファイルのリソースを適用します。

    using GrapeCity.Windows.InputMan;
    
    var style = GcDateTime1.DropDownCalendarStyle;
    if (style == null)
    {
        style = new Style(typeof(GcDropDownCalendar));
        GcDateTime1.DropDownCalendarStyle = style;
    }
    style.Setters.Add(new Setter(GcDropDownCalendar.HolidaySettingProperty, this.Resources["MyHolidayGroup"]));
参照