private void StartResize(AppointmentResizeMode appointmentResizeMode, Cursor resizeCursor)
        {
            this.MakeControlsHitTestVisible(false);
            this.itemsControl.IsResizing = true;
            this.resizeMode = appointmentResizeMode;

            if (Application.Current != null)
            {
                this.cursor = Application.Current.MainWindow.Cursor;
                Application.Current.MainWindow.Cursor = resizeCursor;
            }

            this.HookTimeSlotItemsMouseEnter();

            this.AppointmentsControl.AddMouseUpHandler(this.OnAppointmentsControlMouseUp);
        }
        public void OnAppointmentResizeElementMouseDown(AppointmentItem item, object sender, MouseButtonEventArgs e)
        {
            e.Handled = true;

            if (item.AppointmentSlot.Occurrence.CanResizeOrMove() && !this.itemsControl.Scheduler.IsReadOnly)
            {
                var editingEvent = this.RaiseAppointmentEditingEvent(item.AppointmentSlot.Occurrence.Appointment, AppointmentEditAction.Resize);
                if (!editingEvent.Cancel)
                {
                    this.resizedAppointmentSlot = item.AppointmentSlot;

                    AppointmentResizeMode appointmentResizeMode = item.ResizeStartElement == sender
                                                                  ? AppointmentResizeMode.Start
                                                                  : AppointmentResizeMode.End;

                    this.StartResize(appointmentResizeMode, item.ResizeStartElement.Cursor);
                }
            }
        }