Пример #1
0
        private void InitializeCalender(PackTracker.History History)
        {
            Entity.Pack FirstPack = History.First();
            dp_DatePicker.DisplayDateStart = FirstPack.Time;
            dp_DatePicker.SelectedDate     = History.Last().Time.Date;

            IEnumerable <DateTime> HistoryDates = History.Select(x => x.Time.Date).Distinct();

            for (DateTime i = FirstPack.Time.Date; i.Date < DateTime.Today; i = i.AddDays(1))
            {
                if (!HistoryDates.Contains(i))
                {
                    dp_DatePicker.BlackoutDates.Add(new CalendarDateRange(i));
                }
            }
        }
Пример #2
0
        public HistoryDatePicker(PackTracker.History History)
        {
            InitializeComponent();
            _history = History;

            if (History.Count > 0)
            {
                InitializeCalender(History);
            }
            else
            {
                dp_DatePicker.DisplayDateStart = DateTime.Today;
                History.CollectionChanged     += InitializeCalender;
            }

            dp_DatePicker.SelectedDateChanged += (sender, e) => OnPropertyChanged("AssociatedPack");
            History.CollectionChanged         += (sender, e) => {
                if (e.Action == NotifyCollectionChangedAction.Add)
                {
                    foreach (var Pack in e.NewItems)
                    {
                        if (Pack is Entity.Pack)
                        {
                            Entity.Pack NewPack = (Entity.Pack)Pack;
                            if (_associatedPacks.ContainsKey(NewPack.Time.Date))
                            {
                                _associatedPacks[NewPack.Time.Date].Add(NewPack);
                            }

                            if (dp_DatePicker.SelectedDate != NewPack.Time.Date)
                            {
                                dp_DatePicker.SelectedDate = NewPack.Time.Date;
                            }
                        }
                    }
                }
            };

            dp_DatePicker.MouseWheel += (sender, e) => {
                if (dp_DatePicker.SelectedDate == null)
                {
                    return;
                }

                int      day   = e.Delta < 0 ? -1 : 1;
                DateTime Date  = (DateTime)dp_DatePicker.SelectedDate;
                DateTime First = History.First().Time.Date;
                DateTime Last  = History.Last().Time.Date;

                do
                {
                    Date = Date.AddDays(day);

                    if (day == 1)
                    {
                        if (Date > Last)
                        {
                            return;
                        }

                        if (Date < First)
                        {
                            dp_DatePicker.SelectedDate = First;
                            return;
                        }
                    }
                    else
                    {
                        if (Date < First)
                        {
                            return;
                        }

                        if (Date > Last)
                        {
                            dp_DatePicker.SelectedDate = Last;
                            return;
                        }
                    }
                } while(dp_DatePicker.BlackoutDates.Contains(Date));

                dp_DatePicker.SelectedDate = Date;
            };
        }