Xamarin.Android のドキュメント
選択範囲のカスタマイズ
コントロール > Calendar > 機能 > 選択 > 選択範囲のカスタマイズ

C1Calendar コントロールのデフォルトの動作をカスタマイズして、特定の日付を選択することもできます。たとえば、異なる週の 2 つの日付をタップするだけで、平日だけを選択できるようにしたいとします。それには、getSelectionChanging イベントをサブスクライブし、ハンドラに選択条件を適用するだけです。

次の図は、異なる週の 2 つの日付をタップすると、平日だけが選択され、週末が選択解除される Xamarin Calendar です。

次のコード例は、C# で選択範囲をカスタマイズする方法を示します。次のコード例では、「クイックスタート」セクションで作成したサンプルを使用します。

  1. プロジェクトの MainActivity クラスに、次の import 文を追加します。
    Java
    コードのコピー
    using Android.App;
    using Android.Widget;
    using Android.OS;
    using C1.Android.Calendar;
    using System;
    using Android.Views;
    
  2. 2 つの週の 2 つの日付の間の平日だけが選択されるように、次のコードを追加します。
    C#
    コードのコピー
    public class MainActivity : Activity
        {
            C1Calendar calendar;
            protected override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
    
                // 「メイン」レイアウトリソースからビューを設定する
                SetContentView(Resource.Layout.Main);
                calendar = FindViewById<C1Calendar>(Resource.Id.calendar);
                calendar.SelectionChanging += OnSelectionChanging;
            }
            private void OnSelectionChanging(object sender, CalendarSelectionChangingEventArgs e)
            {
                foreach (var date in e.SelectedDates.ToArray())
                {
                    if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday)
                        e.SelectedDates.Remove(date);
                }
            }
    
            public override bool OnOptionsItemSelected(IMenuItem item)
            {
                if (item.ItemId == global::Android.Resource.Id.Home)
                {
                    Finish();
                    return true;
                }
                else
                {
                    return base.OnOptionsItemSelected(item);
                }
            }