[Xuni:Calendar] 1年間を表示したカレンダー(年ビュー)で月の表示書式を変更する方法 (Xamarin.Forms/Xamarin.iOS)
対象製品
Xuni
詳細
XuniのCalendarコントロールは、年ビューつまり1月から12月までを4×3の格子状に表示して月を選択することができます。
年ビューに月を表示する場合は、システム日付情報に基づき、月の数値のみを表示しています。その表示を"1月、2月、3月…"のように表示する場合は、MonthSlotLoadingイベントで設定できます。
以下のサンプルでは、月を表示する領域に各国(カルチャ)の月表示をカスタム日時書式指定文字列でフォーマットして表示しています。
サンプルコード
C#(Xamarin.Forms)
C#(Xamarin.iOS)
下図のように月を表示する領域に、月を表示する領域をカスタマイズして表示できます。
年ビューに月を表示する場合は、システム日付情報に基づき、月の数値のみを表示しています。その表示を"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) =>
下図のように月を表示する領域に、月を表示する領域をカスタマイズして表示できます。