2014-01-29 1 views
0

У меня есть элемент управления с полем «Список», содержащий некоторые встречи, которые можно перетащить на RadScheduleView. Это работает нормально, но я хочу скопировать (не переместить) встречу. Если возможно, я хочу обработать создание нового назначения, потому что я наследую от Appointment и добавил новое свойство в класс.Как сделать операцию перетаскивания по телерику RadScheduleView копировать (не перемещать) назначение

Я знаю, что перетащить копию можно с помощью клавиши Ctrl при перетаскивании, но я хочу сделать копию по умолчанию.

Возможно, принудительное нажатие клавиши Ctrl, когда пользователь нажимает на элемент списка, может работать. Я не знаю, как сделать последнее, но в любом случае это не лучший подход.

Это эскиз элемента управления. перетащить перетаскивание из окна списка в режим просмотра графика следует скопировать. падение перетаскивания между представлением графика должно двигаться. control with list box and schedule view

Если кому-то нужна дополнительная информация, просьба прокомментировать, и я отредактирую. Благодарю.

ответ

2

После много исследований я нашел, как сделать копию по умолчанию. Я отвечаю на свой вопрос, чтобы люди могли его использовать.

Класс, отвечающий за источник DragDrop (ListBox), является Telerik.Windows.DragDrop.Behaviors.ListBoxDragDropBehavior. Нам просто нужно реализовать свой собственный класс, который наследуется от Telerik.Windows.DragDrop.Behaviors.ListBoxDragDropBehavior и использовать его в XAML при создании ListBox так:

<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; 
    } 
} 

Это все. Надеюсь, поможет.