如何通过telerik RadScheduleView复制(不移动)约会来进行拖放操作

时间:2014-01-29 22:55:41

标签: wpf drag-and-drop telerik radscheduleview

我有一个带有列表框的控件,其中包含一些可以通过RadScheduleView拖放的约会。这工作正常,但我想复制(不移动)约会。如果有可能我想处理新约会的创建,因为我从Appointment继承并向该类添加了一个新属性。

我知道拖动副本可以在拖动时使用Ctrl键完成,但我想让复制成为默认行为。

当用户点击列表框项时,可能会强制按下Ctrl键。我不知道如何做到最后,但无论如何似乎不是最好的方法。

这是控件的草图。从列表框拖放到计划视图应该复制。计划视图之间的拖放应该移动。 control with list box and schedule view

如果有人需要更多详情,请发表评论并进行编辑。感谢。

1 个答案:

答案 0 :(得分:2)

经过大量研究后,我发现默认情况下如何制作副本。我正在回答我自己的问题,所以人们可以使用它。

负责DragDrop源(ListBox)的类是Telerik.Windows.DragDrop.Behaviors.ListBoxDragDropBehavior。我们只需要实现我们自己的继承自Telerik.Windows.DragDrop.Behaviors.ListBoxDragDropBehavior的类,并在创建ListBox时在xaml中使用它,如下所示:

<ListBox>
    <drag:ListBoxDragDrop.Behavior>
        <loc:ListBoxDragDropBehavior/>
    </drag:ListBoxDragDrop.Behavior>
</ListBox>

我们只需更改IsMovingItems即可获得默认的复制行为。

class ListBoxDragDropBehavior :    Telerik.Windows.DragDrop.Behaviors.ListBoxDragDropBehavior
{
    protected override bool IsMovingItems(DragDropState state)
    {
        return false;
    }
}

这就是全部。希望它有所帮助。