New to Telerik UI for WPF? Start a free 30-day trial

Drag-drop between ListBox and ScheduleView

Updated on Sep 23, 2026

To enable drag-drop between a ListBox and a RadScheduleView, on the ListBox should be attached a ListBoxDragDropBehavior and a DataConverter. The DataConverter should convert the dragged items from the ListBox into a ScheduleViewDragDropPayload and vice versa.

Following is an example demonstrating how to convert appointments between a ListBox and a ScheduleView:

  • Create the DataConverter:
C#
public class ScheduleViewToAppointmentConverter : DataConverter
{
    public override string[] GetConvertToFormats()
    {
        return new string[] { typeof(ScheduleViewDragDropPayload).FullName };
    }

    public override object ConvertTo(object data, string format)
    {

        if (format == typeof(ScheduleViewDragDropPayload).FullName && DataObjectHelper.GetDataPresent(data, typeof(Appointment), false))
        {
            var appointments = (IEnumerable)DataObjectHelper.GetData(data, typeof(Appointment), false);
            if (appointments != null)
            {
                return new ScheduleViewDragDropPayload(null, appointments.OfType<IOccurrence>().ToList());
            }
        }
        return null;
    }
}
  • Add CustomScheduleViewDragDropBehavior class which inherits ScheduleViewDragDropBehavior:
C#
public class CustomScheduleViewDragDropBehavior : ScheduleViewDragDropBehavior
{
    public override IEnumerable<IOccurrence> ConvertDraggedData(object data)
    {
        if (DataObjectHelper.GetDataPresent(data, typeof(Appointment), false))
        {
            var appointments = DataObjectHelper.GetData(data, typeof(Appointment), true) as IEnumerable;
            if (appointments != null)
            {
                return appointments.OfType<IOccurrence>();
            }
        }

        return base.ConvertDraggedData(data);
    }
}
  • The final configuration of the two controls in XAML should look like:
XAML
<telerik:RadScheduleView >
    <telerik:RadScheduleView.ViewDefinitions>
        <telerik:WeekViewDefinition />
    </telerik:RadScheduleView.ViewDefinitions>
    <telerik:RadScheduleView.DragDropBehavior>
        <local:CustomScheduleViewDragDropBehavior />
    </telerik:RadScheduleView.DragDropBehavior>
</telerik:RadScheduleView>

<ListBox>
    <drag:ListBoxDragDrop.DataConverter>
        <local:ScheduleViewToAppointmentConverter />
    </drag:ListBoxDragDrop.DataConverter>
    <drag:ListBoxDragDrop.Behavior>
        <drag:ListBoxDragDropBehavior />
    </drag:ListBoxDragDrop.Behavior>
</ListBox>

Here is the result:

dragdropmanager listboxandscheduleview

Not finding the help you need?
Contact Support