Перетаскивание WPF в список с тенью предварительного просмотра, куда он будет переброшен

Я написал пользовательский элемент управления канбан-доски, в котором я могу перетаскивать некоторые карточки из одного столбца в другой (списки/элементы списка), и я использовал компонент "https://github.com/punker76/gong-wpf-dragdrop", чтобы сделать это. Теперь я хочу добавить новое поведение: показывать тень предварительного просмотра, куда будет падать карта, как на анимированном gif во вложении: тень вставляемой карты

На анимированном gif-файле показано, как это делает компонент DevExpress. Вместо использования DevExpress я хотел бы использовать другой компонент с открытым исходным кодом, расширить gong-wpf-dragdrop или сделать это самостоятельно.

Кто-то уже сделал это или знает о компоненте, делающем это? Если нет, у кого-то есть стратегия для этого?

  • Я пробовал с декорациями, но они находятся в другом слое и не занимают места в списке для отображения (возможно, я что-то делаю не так)
  • Следующее, что я сейчас пытаюсь сделать, это добавить временный фиктивный элемент в список, но заставить его работать кажется довольно сложным и требует много кода (возможно, я слишком усложняю эту вещь)
  • Есть ли у кого-нибудь лучшие идеи о стратегиях, компонентах или элементах, которые можно использовать, чтобы заставить его работать, как на анимированном gif?

Я удивлен, что не нашел больше по этой теме в Google. Все делают такие вещи с DevExpress или Telerik? Или до сих пор никто не опубликовал решение с открытым исходным кодом?


person Jonathan Orditz    schedule 31.10.2015    source источник


Ответы (1)


Решение, которое я наконец реализовал, заключается в следующем:

  • Я добавил скрытую нижнюю и верхнюю тень к каждой карточке, содержащейся в списке в XAML (атрибут: «Свернуто»).

  • Я добавил свойство зависимости для управления видимостью нижней или верхней тени.

  • Я создал собственный обработчик со следующими возможностями:

    • do not show shadow if dragged element and next one is hovered
    • показывать тень при наведении на другой элемент (сверху, когда наводится верхняя половина, снизу, когда наводится нижняя половина)

Если кого-то интересует окончательное решение/код, пожалуйста, зарегистрируйте свой интерес в качестве комментария, и я его предоставлю. Если у кого-то есть лучшее представление о том, как решить эту проблему, мне также интересно.

окончательное анимированное изображение приложения

person Jonathan Orditz    schedule 11.12.2015
comment
Было бы очень здорово, если бы вы могли опубликовать свое решение как общедоступное, чтобы все остальные могли видеть, есть ли лучшее решение. Поэтому мне интересно увидеть ваше решение. - person punker76; 18.08.2016
comment
Решение было опубликовано в моем последнем комментарии на GitHub — проблема с gong-wpf-dragdrop 148 как KanbanExample.zip. Обратите внимание, что это было конкретное решение для моей проблемы и проекта. - person Jonathan Orditz; 27.08.2016