예제 #1
0
        /// <summary>
        /// 選択肢を設定する。
        /// </summary>
        /// <param name="range">選択肢の日付範囲</param>
        private void SetDateList(RDatePickerConfig range)
        {
            TraceUtility.Trace();

            // 現在の選択項目を退避。
            object selected = SelectedItem;

            // スピナー選択肢をクリアする。
            if (ItemsSource != null)
            {
                ItemsSource.Clear();
            }

            // 引数で指定された日付範囲どおりに選択肢を設定する。
            List <DateTime> list = new List <DateTime>();

            for (DateTime i = range.From; i <= range.To; i = i.AddDays(1))
            {
                list.Add(i.Date);
            }
            ItemsSource = list;

            // 選択肢の決定。
            if (range.InitialSelectDate != DateTime.MinValue)
            {
                SelectedItem = range.InitialSelectDate.Date;
            }
            else
            {
                SelectedItem = selected;
            }
        }
예제 #2
0
        /// <summary>
        /// 日付範囲・初期選択日付設定プロパティ変更処理。
        /// </summary>
        /// <param name="bindable"></param>
        /// <param name="oldValue"></param>
        /// <param name="newValue"></param>
        private static void OnChangeConfig(BindableObject bindable, object oldValue, object newValue)
        {
            // 引数チェック。
            RDatePickerConfig value = newValue as RDatePickerConfig;

            if (value == null)
            {
                return;
            }
            RDatePicker myself = bindable as RDatePicker;

            if (myself == null)
            {
                return;
            }

            // 変更確認タスクを実施しないようにする。
            // あとで戻すために退避する。
            var shuntedChangeTask = myself.BeforeChageTask;

            myself.BeforeChageTask = null;

            // 選択範囲、選択項目を設定する。
            myself.SetDateList(value);

            // 退避していた変更確認タスクを戻す。
            myself.BeforeChageTask = shuntedChangeTask;
        }