<telerik:RadButton Margin="2" Name="deleteApplicationButton" Click="deleteApplicationButton_Click" IsEnabled="False"> <Image Source="component/Resources/tool_bar_delete.png" Stretch="None" ToolTipService.ToolTip="New Application" /> </telerik:RadButton> <telerik:RadGridView Grid.Row="1" CanUserFreezeColumns="False" ShowGroupPanel="False" ItemsSource="{Binding Path=Applications, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" SelectionChanged="RadGridView_SelectionChanged" Name="RadGridViewApplication" IsSynchronizedWithCurrentItem="True" CellEditEnded="RadGridViewApplication_CellEditEnded"> <telerik:RadGridView.Columns> <telerik:GridViewCheckBoxColumn Header="Delete" DataMemberBinding="{Binding Path=IsChecked}"></telerik:GridViewCheckBoxColumn> <!-- <telerik:GridViewDataColumn Header="Disable" DataMemberBinding="{Binding Path=Disable}" /> --> <telerik:GridViewDataColumn Header="Name" DataMemberBinding="{Binding Path=Key}" IsReadOnly="True" /> <telerik:GridViewDataColumn Header="Description" DataMemberBinding="{Binding Path=Description}" Width="*" IsReadOnly="False" /> <telerik:GridViewDataColumn IsVisible="False" Header="GUID" DataMemberBinding="{Binding Path=GUID}" Width="*" IsReadOnly="False" /> </telerik:RadGridView.Columns>StyleManager.ApplicationTheme = new Expression_DarkTheme();

I have two sources for dragging and dropping appointments onto the ScheduleView. Both consist of dragging custom appt objects so they both utilize a custom dragdrop handler class and use the override of the ConvertDraggedData method. I am wondering if it would be possible to arrange the appts in such a way that if I grabbed appts from all over the view and then dragged them to a specific resource at a specific time, If I could then just have them updated in such a way that the appts were dropped one after another in the view (stacked horizontally in timeline view for example). I think the issue I am having is that destination slots need to be updated somehow to reflect where I want the appts to eventually be. Hopefully this isn't too confusing and someone can lead me in the right direction. Here is a bit of code that I wrote but obviously it isn't working like I expect at this point. I am basically trying to re-arrange the appts so that one comes right after another when they are dropped. The collection looks like I expect when it comes out of my ArrageTasks, but the result is the appts still end up in slots all over the view.
public override IEnumerable<IOccurrence> ConvertDraggedData(object data) { if (data.GetType() == typeof(DataObject)) { return ArrangeTasks(data); //return (data as DataObject).GetData("MetrixTaskAppointments") as IList<IOccurrence>; } return base.ConvertDraggedData(data); } private IEnumerable<IOccurrence> ArrangeTasks(object data) { IList<IOccurrence> appts = (data as DataObject).GetData("MetrixTaskAppointments") as IList<IOccurrence>; IEnumerable<IOccurrence> sortedAppts = appts.OrderBy(f => f.Start); IEnumerator apptEnumerator = sortedAppts.GetEnumerator(); DateTime savedPlanTravelEndDttm = DateTime.Now; bool firstTask = true; while (apptEnumerator.MoveNext()) { MetrixTaskAppointment mAppt = (MetrixTaskAppointment)apptEnumerator.Current; IAppointment appt = (Appointment)apptEnumerator.Current; if (firstTask == true) { firstTask = false; } else { mAppt.PlanTravelStartDttm = savedPlanTravelEndDttm; mAppt.PlanStartDttm = mAppt.PlanTravelStartDttm.AddMinutes(mAppt.PlanTravelToMin); mAppt.PlanEndDttm = mAppt.PlanStartDttm.AddMinutes(mAppt.PlanTaskDurMin); mAppt.PlanTravelEndDttm = mAppt.PlanEndDttm.AddMinutes(mAppt.PlanTravelReturnMin); appt.Start = mAppt.PlanStartDttm; appt.End = mAppt.PlanEndDttm; } savedPlanTravelEndDttm = mAppt.PlanTravelEndDttm; } return sortedAppts; }