[Xuni:Calendar] 指定した期間の日付のみを選択可能にする方法 (Xamarin.Forms)

文書番号 : 82055     文書種別 : HowTo
登録日 : 2017/03/10     最終更新日 : 2017/03/10

対象製品

Xuni

詳細

Xuniのカレンダーコントロールは、規定で標準的なカレンダーを表示し、
日付選択ができる状態になります。

このカレンダーに表示する日付のうち、特定の期間のみを選択可能にする場合は、
その期間の最小の日付(MinDate)と最大日付(MaxDate)を指定することで可能になります。
この期間に含まれない日付は、タッチしても選択状態にはなりません。

また、日付を範囲で選択する場合には、MaxSelectionCount プロパティを設定します。
このプロパティに選択する最大日数を指定し、選択開始と終了の2つの日付をタッチするとその範囲を選択状態にできます。



選択範囲指定の設定を柔軟に変更する場合には、SelectionChangingイベントに処理を記述して選択の可否を判断します。また、MaxSelectionCountプロパティに-1を設定すると、日数の限定はなく選択可能になります。

以下の例では、特定期間中で、20日と木曜日以外の日付がすべて選択されています。



サンプルコード
C#(Xamarin.Forms)
// 3日間を選択可能 
calendar.MaxSelectionCount = 3;

// 選択可能範囲の指定
calendar.MinDate =   DateTime.Parse("2017/3/15");  //期間はじまり
calendar.MaxDate = DateTime.Parse("2017/3/28");  //期間おわり

// 日付選択時に発生するイベント
calendar.SelectionChanging += (object sender, Xuni.Forms.Calendar.CalendarSelectionChangingEventArgs e) =>
{
    foreach (var date in e.SelectedDates.ToArray())
    {
        // 木曜日と10日、20日、30日は選択不可
        if (date.DayOfWeek == DayOfWeek.Thursday || date.Day%10==0)
            e.SelectedDates.Remove(date);
        
    }
};


Xuni > 技術情報 > ドキュメントCalendar-機能-選択範囲のカスタマイズ