Как сделать так, чтобы операция перетаскивания поверх Telerik RadScheduleView копировала (не перемещала) встречу
У меня есть элемент управления со списком, содержащий некоторые встречи, которые можно перетащить через RadScheduleView. Это работает нормально, но я хочу скопировать (а не переместить) встречу. Если это возможно, я хочу обработать создание нового назначения, потому что я наследую от Назначения и добавил новое свойство в класс.
Я знаю, что перетаскивание может быть сделано с помощью клавиши Ctrl при перетаскивании, но я хочу, чтобы сделать копию поведения по умолчанию.
Может быть, принудительное нажатие клавиши Ctrl, когда пользователь нажимает на элемент списка, может сработать. Я не знаю, как сделать последнее, но в любом случае это не лучший подход.
это эскиз контроля. перетащите падение из списка в окно просмотра расписания. перетаскивание между графиком должно двигаться.
Если кому-то нужна более подробная информация, пожалуйста, прокомментируйте, и я отредактирую. Благодарю.
1 ответ
После долгих исследований я нашел, как сделать копию по умолчанию. Я отвечаю на свой вопрос, чтобы люди могли его использовать.
Класс, отвечающий за источник 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;
}
}
Это все. Надеюсь, поможет.