示例#1
0
        void dayBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (e.Source is DayBoxControl)
            {
                //VisualTreeAdapter t = new VisualTreeAdapter(e.OriginalSource as DependencyObject);
                //DependencyObject  k = t.Parent;

                if (e.OriginalSource is TextBlock)
                {
                    TextBlock t = e.OriginalSource as TextBlock;
                    if (t.Name.Equals("DisplayText"))
                    {
                        return;
                    }
                }

                NewAppointmentEventArgs ev = new NewAppointmentEventArgs();
                DayBoxControl           d  = e.Source as DayBoxControl;
                ev.StartDate   = DisplayStartDate.AddDays(Double.Parse(d.Tag.ToString()) - 1).Date;
                ev.RoutedEvent = DayBoxDoubleClickedEvent;
                RaiseEvent(ev);
                e.Handled = true;
            }
        }
示例#2
0
        private void BuildCalendarUI()
        {
            int iDaysInMonth = DateTime.DaysInMonth(DisplayStartDate.Year, DisplayStartDate.Month);
            //int iOffsetDays = System.Enum.ToObject(System.DayOfWeek, DisplayStartDate.DayOfWeek);
            int iOffsetDays = (int)DisplayStartDate.DayOfWeek;
            int iWeekCount  = 0;
            WeekOfDaysControl weekRowCtrl = new WeekOfDaysControl();

            MonthViewGrid.Children.Clear();
            AddRowsToMonthGrid(iDaysInMonth, iOffsetDays);
            MonthYearLabel.Content = DisplayStartDate.ToString("MMMM") + " " + year;

            for (int i = 1; i <= iDaysInMonth; i++)
            {
                if ((i != 1) && System.Math.IEEERemainder((i + iOffsetDays - 1), 7) == 0)
                {
                    Grid.SetRow(weekRowCtrl, iWeekCount);
                    MonthViewGrid.Children.Add(weekRowCtrl);
                    weekRowCtrl = new WeekOfDaysControl();
                    iWeekCount++;
                }

                DayBoxControl dayBox = new DayBoxControl();
                dayBox.Name = "DayBox" + i;
                dayBox.DayNumberLabel.Text = i.ToString();
                dayBox.Tag = i;
                dayBox.MouseDoubleClick += new MouseButtonEventHandler(dayBox_MouseDoubleClick);
                //dayBox.PreviewDragEnter += new DragEventHandler(dayBox_PreviewDragEnter);
                //dayBox.PreviewDragLeave += new DragEventHandler(dayBox_PreviewDragLeave);

                //rest the namescope of the daybox in case user drags appointment from this day to another day, then back again
                //UnregisterName("DayBox" + i.ToString());
                //System.Windows.NameScope.SetNameScope(dayBox, new System.Windows.NameScope());
                //RegisterName("DayBox" + i.ToString(), dayBox);

                //-- resets the list of control-names registered with this monthview (to avoid duplicates later)
                //UnregisterName("DayBox" + i.ToString());
                //System.Windows.NameScope.SetNameScope(dayBox, new System.Windows.NameScope());
                //RegisterName("DayBox" + i.ToString(), dayBox);

                if (appointments != null)
                {
                    foreach (Appointment a in appointments)
                    {
                        if (a.ApDate.Day == i)
                        {
                            DayBoxAppointmentControl apt = new DayBoxAppointmentControl();
                            apt.Name              = "Apt" + a.Id;
                            apt.DataContext       = a;
                            apt.MouseDoubleClick += new MouseButtonEventHandler(appointment_MouseDoubleClick);
                            dayBox.DayAppointmentsStack.Children.Add(apt);
                            //dayBox.RegisterName(apt.Name, apt);
                        }
                    }
                }

                if (DateTime.Now.Day == i)
                {
                    dayBox.DayLabelRowBorder.Background    = Brushes.Aqua;
                    dayBox.DayAppointmentsStack.Background = Brushes.Wheat;
                }
                Grid.SetColumn(dayBox, (i - (iWeekCount * 7)) + iOffsetDays);
                weekRowCtrl.WeekRowGrid.Children.Add(dayBox);
            }
            Grid.SetRow(weekRowCtrl, iWeekCount);
            MonthViewGrid.Children.Add(weekRowCtrl);
        }
        private void BuildCalendarUI()
        {
            int iDaysInMonth = DateTime.DaysInMonth(DisplayStartDate.Year, DisplayStartDate.Month);
            //int iOffsetDays = System.Enum.ToObject(System.DayOfWeek, DisplayStartDate.DayOfWeek);
            int iOffsetDays = (int)DisplayStartDate.DayOfWeek; 
            int iWeekCount = 0;
            WeekOfDaysControl weekRowCtrl = new WeekOfDaysControl();
            MonthViewGrid.Children.Clear();
            AddRowsToMonthGrid(iDaysInMonth, iOffsetDays);
            MonthYearLabel.Content =  DisplayStartDate.ToString("MMMM") +" "+year;

            for (int i = 1; i <= iDaysInMonth; i++)
            {
                if ( (i != 1) && System.Math.IEEERemainder((i + iOffsetDays - 1), 7) == 0)
                {
                    Grid.SetRow(weekRowCtrl, iWeekCount);
                    MonthViewGrid.Children.Add(weekRowCtrl);
                    weekRowCtrl = new WeekOfDaysControl();
                    iWeekCount++;
                }

                DayBoxControl dayBox = new DayBoxControl();
                dayBox.Name = "DayBox" + i;
                dayBox.DayNumberLabel.Text = i.ToString();
                dayBox.Tag = i;
                dayBox.MouseDoubleClick += new MouseButtonEventHandler(dayBox_MouseDoubleClick);
                //dayBox.PreviewDragEnter += new DragEventHandler(dayBox_PreviewDragEnter);
                //dayBox.PreviewDragLeave += new DragEventHandler(dayBox_PreviewDragLeave);
                
                //rest the namescope of the daybox in case user drags appointment from this day to another day, then back again
                //UnregisterName("DayBox" + i.ToString());
                //System.Windows.NameScope.SetNameScope(dayBox, new System.Windows.NameScope());
                //RegisterName("DayBox" + i.ToString(), dayBox);

                //-- resets the list of control-names registered with this monthview (to avoid duplicates later)
                //UnregisterName("DayBox" + i.ToString());
                //System.Windows.NameScope.SetNameScope(dayBox, new System.Windows.NameScope());
                //RegisterName("DayBox" + i.ToString(), dayBox);

                if(appointments != null)
                {
                    foreach(Appointment a in appointments)
                    {
                        if (a.ApDate.Day == i)
                        {
                            DayBoxAppointmentControl apt = new DayBoxAppointmentControl();
                            apt.Name = "Apt" + a.Id;
                            apt.DataContext = a;
                            apt.MouseDoubleClick += new MouseButtonEventHandler(appointment_MouseDoubleClick);
                            dayBox.DayAppointmentsStack.Children.Add(apt);
                            //dayBox.RegisterName(apt.Name, apt);
                        }
                    }
                }

                if (DateTime.Now.Day == i)
                {
                    dayBox.DayLabelRowBorder.Background = Brushes.Aqua;
                    dayBox.DayAppointmentsStack.Background = Brushes.Wheat;
                }
                Grid.SetColumn(dayBox, (i - (iWeekCount * 7)) + iOffsetDays);
                weekRowCtrl.WeekRowGrid.Children.Add(dayBox);
            }
            Grid.SetRow(weekRowCtrl, iWeekCount);
            MonthViewGrid.Children.Add(weekRowCtrl);
        }