Не могу перетащить ListBoxItem Adorner вне ListBox в WPF -ScrollViewerProblem - PullRequest
3 голосов
/ 17 февраля 2011

Я работаю с приложением WPF, которое использует много перетаскивания. Все работает нормально, за исключением ListBoxItems. У меня есть ListBox с ListBoxItems, которые можно перетащить на другую цель (StackPanel). Проблема в том, что когда я перетаскиваю курсор за пределы ListBox, я не вижу Adorner, который я настроил с помощью ListBoxItem?

Я знаю, что это обычная проблема, но я просто не знаю, как ее исправить. Есть ли что-то, что мне нужно сделать, чтобы я мог перетащить за пределы элемента управления ListBox?

Ниже я добавил, как выглядит пользовательский интерфейс. Как видите, в левом нижнем углу есть ListBox. Когда я перетаскиваю элемент, появляется рекламщик и следует за курсором, когда курсор находится над ListBox, но если я пытаюсь переместить курсор от списка, Adorner, похоже, почти переходит под другие элементы управления (zIndex?) , enter image description here

Редактировать - Решение Я изменил код для обработки AdornerLayer относительно окна, а не относительно AdornedElement

Итак, я изменился

    layer = AdornerLayer.GetAdornerLayer(_originalElement);

до

    layer = AdornerLayer.GetAdornerLayer(this);

Это решило проблему с вырезанием ScrollViwer на AdornerLayer

1 Ответ

3 голосов
/ 17 февраля 2011

ListBox (или, точнее, ScrollViewer внутри списка) обрезает любые элементы оформления, прикрепленные к его дочерним элементам.Это сделано для того, чтобы не отображались значки для прокручиваемых предметов.Чтобы обойти это, вам нужно явно указать что-то в окне Window, а не в listbox или listboxitem

...