Пример #1
0
 public void InvokeOnPicked(AyDatePickEventArgs args)
 {
     if (OnPicked.IsNotNull())
     {
         OnPicked(this, args);
     }
     Week = AyCalendarService.GetWeekOfYear(PickedDate.Value, DateRuleObjects.firstDayOfWeek).ToObjectString();
 }
Пример #2
0
        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;
                }
            }
        }
Пример #3
0
        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();
            }
        }