[Xuni:Calendar] 1年間を表示したカレンダー(年ビュー)で月の表示書式を変更する方法 (Xamarin.Forms/Xamarin.iOS)

文書番号 : 81813     文書種別 : 使用方法     登録日 : 2016/09/28     最終更新日 : 2016/09/28
文書を印刷する
対象製品
Xuni
詳細
XuniのCalendarコントロールは、年ビューつまり1月から12月までを4×3の格子状に表示して月を選択することができます。
年ビューに月を表示する場合は、システム日付情報に基づき、月の数値のみを表示しています。その表示を"1月、2月、3月…"のように表示する場合は、MonthSlotLoadingイベントで設定できます。

以下のサンプルでは、月を表示する領域に各国(カルチャ)の月表示をカスタム日時書式指定文字列でフォーマットして表示しています。

サンプルコード
C#(Xamarin.Forms)
String[] monthLuna = { "睦月", "如月", "弥生", "卯月", "皋月", "水無月", "文月", "葉月", "長月", "神無月", "霜月", "師走" };

// カレンダーの表示を年ビューに設定
calendar.ViewMode = CalendarViewMode.Year;
// MonthSlotoading イベント
calendar.MonthSlotLoading += (object sender, CalendarMonthSlotLoadingEventArgs e) => 
    {
    // イベント引数から月スロットを取得
    var monthSlot = e.MonthSlot as CalendarMonthSlot;

    //カルチャを変更して各国の月表示に変換
    var dt = new DateTime(2000, e.Month, 1); //月を取得するためのDateTime型変数
    var monthJA = dt.ToString("MMMM", new System.Globalization.CultureInfo("ja-JP")) 
                + String.Format("[" + monthLuna[e.Month - 1] + "]");
    var monthUS = dt.ToString("MMMM", new System.Globalization.CultureInfo("en-US"));
    var monthCN = dt.ToString("MMMM", new System.Globalization.CultureInfo("zh-CN"));
    var monthKR = dt.ToString("MMMM", new System.Globalization.CultureInfo("ko-KR"));

    // 各国の月表示を連結する
    var monthWW = monthJA + Environment.NewLine;
    monthWW += monthUS + Environment.NewLine;
    monthWW += monthCN + Environment.NewLine;
    monthWW += monthKR;
    // 月スロットに表示する月を文字列として設定
    monthSlot.MonthText = monthWW;
    e.MonthSlot = monthSlot;
};

C#(Xamarin.iOS)
    // Xamarin.iOSの場合は以下の2か所のみ表記が異なり、
    // 以下の内容に置き換える必要があります。

    // カレンダーのビューモードの定数
    calendar.ViewMode = XuniCalendarViewMode.Year;

    // MonthSlotLoadingの引数
    calendar.MonthSlotLoading += (object sender, MonthSlotLoadingEventArgs e) => 


下図のように月を表示する領域に、月を表示する領域をカスタマイズして表示できます。

関連情報