Как сделать так, чтобы операция перетаскивания поверх 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;
    }
}

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

Другие вопросы по тегам