/// <summary>
        /// Fired when an object is dropped on the calendar.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void calendar_Drop(object sender, DragEventArgs e)
        {
            DragAndDropHelper dragAndDropHelper      = new DragAndDropHelper();
            FrameworkElement  targetFrameworkElement = (FrameworkElement)e.OriginalSource;
            Object            context = targetFrameworkElement.DataContext;

            while (!(context is DateTime))
            {
                targetFrameworkElement = (FrameworkElement)VisualTreeHelper.GetParent(targetFrameworkElement);
                context = targetFrameworkElement.DataContext;
                Debug.Assert(context != null); // context shouldn't be null
            }

            DateTime targetDate = (DateTime)context;

            if (targetDate != null)
            {
                dragAndDropHelper.DropOnDate(targetDate, e.Data);
            }
        }