public void InvokeOnPicked(AyDatePickEventArgs args) { if (OnPicked.IsNotNull()) { OnPicked(this, args); } Week = AyCalendarService.GetWeekOfYear(PickedDate.Value, DateRuleObjects.firstDayOfWeek).ToObjectString(); }
public Button CreateButtons(int content) { Button btn = new Button(); btn.ClickMode = ClickMode.Press; btn.Content = content.ToString(); btn.SetResourceReference(Button.StyleProperty, "AyDateBoxCalendar.Button"); AyCalendarService.SetClickMinuteButtonsEnabled(btn, content, SelectedDateTime, MinDateTime, MaxDateTime, DisabledDatesStrings, setOpposite); btn.Tag = content; btn.Click += Btn_Click; return(btn); }
private void YearNavigationOperation() { isCreateLessMinValue = false; isCreateLessMaxValue = false; int _1 = 0; for (int i = fiveBefore; i < endBefore; i++) { var _11 = RootGrid.Children[_1] as Button; if (_11.IsNotNull()) { _11.Content = i; _11.Tag = i; _11.IsEnabled = true; if (i < MinValue) { isCreateLessMinValue = true; _11.IsEnabled = false; } if (i > MaxValue) { _11.IsEnabled = false; isCreateLessMaxValue = true; } AyCalendarService.SetClickYearButtonsEnabled(_11, i, MinDateTime, MaxDateTime, DisplayDatesStrings, setOpposite, SelectedDateTime); } _1++; } if (!isCreateLessMinValue) { prewtenbutton.IsEnabled = true; } else { prewtenbutton.IsEnabled = false; } if (!isCreateLessMaxValue) { nexttenbutton.IsEnabled = true; } else { nexttenbutton.IsEnabled = false; } this.Focus(); this.SelectAll(); }
public void CreatePopupList() { if (DateRule == "") //如果是空白,默认选中今天,啥也不限制 { AyCalendar ac = new AyCalendar(); ac.BorderBrush = Brushes.Transparent; ac.MinDateReferToElement = this.MinDateReferToElement; ac.MaxDateReferToElement = this.MaxDateReferToElement; ac.DateBoxInput = this; //ac.DisabledDatesStrings = this.DisabledDatesStrings; ac.HorizontalAlignment = HorizontalAlignment.Center; ac.VerticalAlignment = VerticalAlignment.Center; ac.SelectMode = AyDatePickerSelectMode.OnlySelectDate; if (!this.Text.IsNullAndTrimAndEmpty()) { DateTime?date = ReverseDateTimeFromText(ac); if (date.HasValue) { ac.SelectedDateTime = date; } } RootGrid.Children.Add(ac); } else { if (DateRuleObjects.IsNotNull()) { _fmt = AyCalendarService.GetAyCalendarFMT(DateRuleObjects.dateFmt); switch (_fmt) { case AyCalendarFMT.None: break; default: AyCalendar ac = CreateAyCalendar(); RootGrid.Children.Add(ac); break; } } } }
public Button CreateButtons(int content) { Button btn = new Button(); btn.ClickMode = ClickMode.Press; btn.Content = content.ToString(); btn.SetResourceReference(Button.StyleProperty, "AyDateBoxCalendar.Button"); AyCalendarService.SetClickYearButtonsEnabled(btn, content, MinDateTime, MaxDateTime, DisplayDatesStrings, setOpposite, SelectedDateTime); if (content < MinValue) { isCreateLessMinValue = true; btn.IsEnabled = false; } if (content > MaxValue) { btn.IsEnabled = false; isCreateLessMaxValue = true; } btn.Tag = content; btn.Click += Btn_Click; return(btn); }
private AyCalendar CreateAyCalendar() { if (DateRuleObjects.disabledDates.IsNotNull() && DateRuleObjects.disabledDates.Count > 0) { if (DisabledDatesStrings == null) { DisabledDatesStrings = new List <string>(); } else { DisabledDatesStrings.Clear(); } foreach (var disabledDate in DateRuleObjects.disabledDates) { var _ti = AyCalendarService.hasTeShu(disabledDate); string _2 = disabledDate; if (_ti) { _2 = AyDateStrictExpression.ConvertDynamicAyDateExpression(disabledDate); if (!DisabledDatesStrings.Contains(_2)) { DisabledDatesStrings.Add(_2); } } else { if (!DisabledDatesStrings.Contains(_2)) { DisabledDatesStrings.Add(_2); } } } } else { DisabledDatesStrings = null; } List <string> SpecialDatesStrings = null; if (DateRuleObjects.specialDates.IsNotNull() && DateRuleObjects.specialDates.Count > 0) { if (SpecialDatesStrings == null) { SpecialDatesStrings = new List <string>(); } foreach (var specialDates in DateRuleObjects.specialDates) { var _ti = AyCalendarService.hasTeShu(specialDates); string _2 = specialDates; if (_ti) { _2 = AyDateStrictExpression.ConvertDynamicAyDateExpression(specialDates); if (!SpecialDatesStrings.Contains(_2)) { SpecialDatesStrings.Add(_2); } } else { if (!SpecialDatesStrings.Contains(_2)) { SpecialDatesStrings.Add(_2); } } } } AyCalendar ac = new AyCalendar(DateRule); ac.BorderBrush = Brushes.Transparent; ac.MinDateReferToElement = this.MinDateReferToElement; ac.MaxDateReferToElement = this.MaxDateReferToElement; ac.DisabledDatesStrings = this.DisabledDatesStrings; ac.SpecialDatesStrings = SpecialDatesStrings; ac.DateBoxInput = this; ac.HorizontalAlignment = HorizontalAlignment.Center; ac.VerticalAlignment = VerticalAlignment.Center; DateTime?date = ReverseDateTimeFromText(ac); if (date.HasValue) { ac.SelectedDateTime = date; } return(ac); }
internal void UseValidate() { bool hasTan = false; try { DateRuleObjects = AyJsonUtility.DecodeObject2 <AyDateRuleJsonToObjects>(DateRule); if (DateRuleObjects.IsNotNull()) { string[] expectedFormats = { DateRuleObjects.dateFmt }; DateTime dt = DateTime.ParseExact(Text, expectedFormats, AyDatePickerHelper.culture, DateTimeStyles.AllowInnerWhite); if (dt.Year < YearStrick.MINYEAR) { if (!hasTan) { HasWrongShowTip(); hasTan = true; } return; } else if (dt.Year > YearStrick.MAXYEAR) { if (!hasTan) { HasWrongShowTip(); hasTan = true; } } if (!DateItemIsInValidRange(dt)) { if (!hasTan) { HasWrongShowTip(); hasTan = true; } } if (!hasTan) { PickedDate = dt; if (DateRuleObjects.IsNotNull()) { Week = AyCalendarService.GetWeekOfYear(PickedDate.Value, DateRuleObjects.firstDayOfWeek).ToObjectString(); } else { Week = "0"; } } //} } } catch { if (!hasTan) { hasTan = true; ErrorInfo = AyCalendarService.WRONGTIP; apErrorToolTip.IsOpen = true; IsError = true; return; } } }
/// <summary> /// 验证时间是否在有效值的范围内 /// </summary> /// <param name="item"></param> /// <returns></returns> internal bool DateItemIsInValidRange(DateTime item) { bool returnResult = true; if (DateRuleObjects.IsNotNull()) { if (!DateRuleObjects.minDate.IsNullAndTrimAndEmpty()) { //是否含有#F{ } if (DateRuleObjects.minDate.IndexOf(@"#F{") == 0) { List <DateTime?> _4 = null; if (DateRuleObjects.minDate.IndexOf("ay") > -1) //使用了绑定 { if (MinDateReferToElement.IsNotNull()) { string _text = MinDateReferToElement.Text; string _dateRule = MinDateReferToElement.DateRule; var ddo = AyJsonUtility.DecodeObject2 <AyDateRuleJsonToObjects>(_dateRule); if (ddo.IsNotNull()) { _4 = AyDateStrictExpression.ConvertDDVF(_text, DateRuleObjects.minDate, ddo.dateFmt); } else { _4 = AyDateStrictExpression.ConvertDDVF(_text, DateRuleObjects.minDate, "yyyy-MM-dd"); } } } else { _4 = AyDateStrictExpression.ConvertDDVF(null, DateRuleObjects.minDate, null); } bool ret = true; foreach (var subtime in _4) { if (subtime.IsNotNull() && item < subtime.Value) { ret = false; break; } } return(ret); } else { //单控制 DateTime MinDateCopy = AyDateStrictExpression.Convert(DateRuleObjects.minDate); if (item < MinDateCopy) { returnResult = false; } } } if (!DateRuleObjects.maxDate.IsNullAndTrimAndEmpty()) { //是否含有#F{ } if (DateRuleObjects.maxDate.IndexOf(@"#F{") == 0) { List <DateTime?> _4 = null; if (DateRuleObjects.maxDate.IndexOf("ay") > -1) //使用了绑定 { if (MaxDateReferToElement.IsNotNull()) { string _text = MaxDateReferToElement.Text; string _dateRule = MaxDateReferToElement.DateRule; var ddo = AyJsonUtility.DecodeObject2 <AyDateRuleJsonToObjects>(_dateRule); if (ddo.IsNotNull()) { _4 = AyDateStrictExpression.ConvertDDVF(_text, DateRuleObjects.maxDate, ddo.dateFmt); } else { _4 = AyDateStrictExpression.ConvertDDVF(_text, DateRuleObjects.maxDate, "yyyy-MM-dd"); } } } else { _4 = AyDateStrictExpression.ConvertDDVF(null, DateRuleObjects.maxDate, null); } bool ret = true; foreach (var subtime in _4) { if (subtime.IsNotNull() && item > subtime.Value) { ret = false; break; } } return(ret); } else { //单控制 DateTime MaxDateCopy = AyDateStrictExpression.Convert(DateRuleObjects.maxDate); if (item > MaxDateCopy) { returnResult = false; } } } if (DateRuleObjects.disabledDays.IsNotNull() && DateRuleObjects.disabledDays.Count > 0) { var _1 = item.DayOfWeek.GetHashCode(); foreach (var disabledDay in DateRuleObjects.disabledDays) { if (_1 == disabledDay) { returnResult = false; break; } } } if (DateRuleObjects.disabledDates.IsNotNull() && DateRuleObjects.disabledDates.Count > 0) { if (DisabledDatesStrings == null) { DisabledDatesStrings = new List <string>(); } else { DisabledDatesStrings.Clear(); } foreach (var disabledDate in DateRuleObjects.disabledDates) { var _ti = AyCalendarService.hasTeShu(disabledDate); string _2 = disabledDate; if (_ti) { _2 = AyDateStrictExpression.ConvertDynamicAyDateExpression(disabledDate); if (!DisabledDatesStrings.Contains(_2)) { DisabledDatesStrings.Add(_2); } } else { if (!DisabledDatesStrings.Contains(disabledDate)) { DisabledDatesStrings.Add(disabledDate); } } //正则处理 if (_2.IndexOf(":") < 0) { bool d = Regex.IsMatch(item.ToString("yyyy-MM-dd"), _2); if (d) { returnResult = false; } } else { bool d = Regex.IsMatch(item.ToString("yyyy-MM-dd HH:mm:ss"), _2); if (d) { returnResult = false; } } if (DateRuleObjects.opposite) { returnResult = !returnResult; } } } else { DisabledDatesStrings = null; } } return(returnResult); }
internal void FilterDatePickerItem(AyDatePickerItem item) { if (firstInitMinMax) { var _1 = AyCalendarService.FilterDatePickerItem(DateRuleObjects, MinDateReferToElement, MaxDateReferToElement); MinDateCopy = _1.Item1; MaxDateCopy = _1.Item2; firstInitMinMax = false; } if (item.IsNotNull()) { if (MinDateCopy.Count > 0) { foreach (var subitem in MinDateCopy) { if (subitem.HasValue && item.Date < subitem.Value.Date) { item.IsEnabled = false; break; } } } if (MaxDateCopy.Count > 0) { foreach (var subitem in MaxDateCopy) { if (subitem.HasValue && item.Date > subitem.Value.Date) { item.IsEnabled = false; break; } } } //周几限制 if (DateRuleObjects.IsNotNull()) { if (DateRuleObjects.disabledDays.IsNotNull() && DateRuleObjects.disabledDays.Count > 0) { var _1 = item.Date.DayOfWeek.GetHashCode(); foreach (var disabledDay in DateRuleObjects.disabledDays) { if (_1 == disabledDay) { item.IsEnabled = false; break; } } } //限制disabledDate var _validateItemResult = AyCalendarService.ValidateRegexDate(item.Date, this.DisabledDatesStrings, DateRuleObjects.opposite); if (!_validateItemResult) { item.IsEnabled = false; } //高亮日和高亮日期 if (DateRuleObjects.specialDays.IsNotNull() && DateRuleObjects.specialDays.Count > 0) { var _1 = item.Date.DayOfWeek.GetHashCode(); foreach (var specialDay in DateRuleObjects.specialDays) { if (_1 == specialDay) { item.IsHighlight = true; break; } } } if (SpecialDatesStrings.IsNotNull() && SpecialDatesStrings.Count > 0) { foreach (var SpecialDates in SpecialDatesStrings) { bool vaResult = false; if (SpecialDates.IndexOf(":") > -1) { string[] _01 = item.Date.ToString("yyyy-MM-dd HH:mm:ss").Split(' '); string[] _02 = SpecialDates.Split(' '); vaResult = System.Text.RegularExpressions.Regex.IsMatch(_01[0] + " " + _02[1], SpecialDates); } else { vaResult = System.Text.RegularExpressions.Regex.IsMatch(item.Date.ToString("yyyy-MM-dd"), SpecialDates); } if (vaResult) { item.IsHighlight = true; break; } } } } } }
public void SetList(int year, int month, int SelectedDay, bool Select = true) { items.Clear(); sp_weekhead.Children.Clear(); currentYear = year; currentMonth = month; currentDay = SelectedDay; DateTime now = DateTime.Now; int IndexOfFistDay = 1; if (DateRuleObjects == null) { return; } if (DateRuleObjects.firstDayOfWeek > -1 && DateRuleObjects.firstDayOfWeek < 7) { IndexOfFistDay = AyDatePickerHelper.GetDayOfWeek(year, month, AyFirstOfWeekDictionary.FirstDayDistanceDays[DateRuleObjects.firstDayOfWeek]); for (int i = DateRuleObjects.firstDayOfWeek; i < 7; i++) { sp_weekhead.Children.Add(AyCalendarService.CreateWeekHeadLabel(AyFirstOfWeekDictionary.FirstDayDistanceDaysText[i])); } for (int i = 0; i < DateRuleObjects.firstDayOfWeek; i++) { sp_weekhead.Children.Add(AyCalendarService.CreateWeekHeadLabel(AyFirstOfWeekDictionary.FirstDayDistanceDaysText[i])); } } else { IndexOfFistDay = AyDatePickerHelper.GetDayOfWeek(year, month, 1); for (int i = 0; i < 7; i++) { sp_weekhead.Children.Add(AyCalendarService.CreateWeekHeadLabel(AyFirstOfWeekDictionary.FirstDayDistanceDaysText[i])); } } DateTime weekStart = new DateTime(year, month, 1); DateTime nextMonthStart = weekStart.AddMonths(1); //6 代表 这个月1号是星期六 0-6 int day = 1; int nextMonth = 0; int monDay = AyDatePickerHelper.NumOfDays(year, month); for (int i = 0; i < 42; i++) { AyDatePickerItem item = new AyDatePickerItem(); if (i >= IndexOfFistDay && day <= monDay) { //var nongli = AyDatePickerHelper.GetNongLi(year, month, day); //item.NameOfDay = nongli.Day; //item.MonthAndDay = nongli.MonthAndDay; item.NumberOfDay = day.ToString(); item.Date = new DateTime(year, month, day); if (item.Date.Year > YearStrick.MAXYEAR || item.Date.Year < YearStrick.MINYEAR) { item.IsEnabled = false; } //item.Week_S = item.Date.ToString("dddd", AyDatePickerHelper.culture); //item.ShengXiao = nongli.ShengXiao; //item.GanZhi = nongli.TianGan + nongli.DiGan; //item.TianGan = nongli.TianGan; //item.TianGan = nongli.DiGan; //item.JieQi = nongli.JieQi; //item.GongHoliday = nongli.GongHoliday; //item.NongHoliday = nongli.NongHoliday; //item.Title = nongli.Title; //item.TitleType = nongli.TitleType; //item.TipShow = item.Date.ToString("yyyy年MM月dd日 ") + item.Week_S // + Environment.NewLine + "[" + item.GanZhi + item.ShengXiao + "年]" + "农历" + item.MonthAndDay; //item.TipShow = item.Date.ToString("yyyy年MM月dd日 ") + item.Week_S; item.IsLastOrNextDateItem = false; //TODO 最大最小值判断 FilterDatePickerItem(item); if (item.Date.Date == now.Date) { item.IsToday = true; } if (SelectedDay == day && Select) { item.IsSelected = true; } //是不是周末 if (DateRuleObjects.highLineWeekDay) { var t = item.Date.DayOfWeek; if (t == DayOfWeek.Saturday || t == DayOfWeek.Sunday) { item.IsWeekDay = true; } } day++; items.Add(item); } else if (i < IndexOfFistDay) {//前置补空 int ad = i - IndexOfFistDay; item.Date = weekStart.AddDays(ad); if (item.Date.Year > YearStrick.MAXYEAR || item.Date.Year < YearStrick.MINYEAR) { item.IsEnabled = false; } //var nongli = AyDatePickerHelper.GetNongLi(item.Date.Year, item.Date.Month, item.Date.Day); //item.NameOfDay = nongli.Day; //item.MonthAndDay = nongli.MonthAndDay; item.NumberOfDay = item.Date.Day.ToString(); //item.Week_S = item.Date.ToString("dddd", AyDatePickerHelper.culture); //item.ShengXiao = nongli.ShengXiao; //item.GanZhi = nongli.TianGan + nongli.DiGan; //item.TianGan = nongli.TianGan; //item.TianGan = nongli.DiGan; //item.JieQi = nongli.JieQi; //item.GongHoliday = nongli.GongHoliday; //item.NongHoliday = nongli.NongHoliday; //item.Title = nongli.Title; //item.TitleType = nongli.TitleType; //item.TipShow = item.Date.ToString("yyyy年MM月dd日 ") + item.Week_S; item.IsLastOrNextDateItem = true; //TODO 最大最小值判断 FilterDatePickerItem(item); if (item.Date.Date == now.Date) { item.IsToday = true; } //是不是周末 if (DateRuleObjects.highLineWeekDay) { var t = item.Date.DayOfWeek; if (t == DayOfWeek.Saturday || t == DayOfWeek.Sunday) { item.IsWeekDay = true; } } items.Add(item); } else { //后置补空 item.Date = nextMonthStart.AddDays(nextMonth); if (item.Date.Year > YearStrick.MAXYEAR || item.Date.Year < YearStrick.MINYEAR) { item.IsEnabled = false; } //var nongli = AyDatePickerHelper.GetNongLi(item.Date.Year, item.Date.Month, item.Date.Day); //item.NameOfDay = nongli.Day; //item.MonthAndDay = nongli.MonthAndDay; item.NumberOfDay = item.Date.Day.ToString(); //item.Week_S = item.Date.ToString("dddd", AyDatePickerHelper.culture); //item.ShengXiao = nongli.ShengXiao; //item.GanZhi = nongli.TianGan + nongli.DiGan; //item.TianGan = nongli.TianGan; //item.TianGan = nongli.DiGan; //item.JieQi = nongli.JieQi; //item.GongHoliday = nongli.GongHoliday; //item.NongHoliday = nongli.NongHoliday; //item.Title = nongli.Title; //item.TitleType = nongli.TitleType; //item.TipShow = item.Date.ToString("yyyy年MM月dd日 ") + item.Week_S; item.IsLastOrNextDateItem = true; //TODO 最大最小值判断 FilterDatePickerItem(item); if (item.Date.Date == now.Date) { item.IsToday = true; } //是不是周末 if (DateRuleObjects.highLineWeekDay) { var t = item.Date.DayOfWeek; if (t == DayOfWeek.Saturday || t == DayOfWeek.Sunday) { item.IsWeekDay = true; } } items.Add(item); nextMonth++; } } //设置周 if (DateRuleObjects.isShowWeek && items.Count > 0) { bdWeekHead.Visibility = Visibility.Visible; //计算周 sp_WeekNo.Children.Clear(); var _1 = AyCalendarService.GetWeekOfYear(items[0].Date, DateRuleObjects.firstDayOfWeek); sp_WeekNo.Children.Add(AyCalendarService.CreateWeekHeadLabel2((_1++).ToString())); sp_WeekNo.Children.Add(AyCalendarService.CreateWeekHeadLabel2((_1++).ToString())); sp_WeekNo.Children.Add(AyCalendarService.CreateWeekHeadLabel2((_1++).ToString())); sp_WeekNo.Children.Add(AyCalendarService.CreateWeekHeadLabel2((_1++).ToString())); sp_WeekNo.Children.Add(AyCalendarService.CreateWeekHeadLabel2((_1++).ToString())); sp_WeekNo.Children.Add(AyCalendarService.CreateWeekHeadLabel2((_1++).ToString())); } else { bdWeekHead.Visibility = Visibility.Collapsed; sp_WeekNo.Children.Clear(); } }