Я пытаюсь создать красивую «зону перетаскивания» в WPF, которая отображается в слое adorner, когда что-то перетаскивается в основное приложение. Проблема в том, что я не получаю никаких событий от своего рекламодателя, даже если он согласно документации должен получать все входные события, поскольку он находится в более высоком z-порядке.
Для отладки моей проблемы я создал очень простой пример, в котором у меня есть пользовательский элемент управления, в котором есть только кнопка. Этот пользовательский элемент управления отображается в слое adorner, но я не могу нажать кнопку. Зачем? Что я сделал не так?
Мой класс поклонников построен так:
public ShellOverlayAdorner(UIElement element, AdornerLayer adornerLayer)
:base(element)
{
_adornerLayer = adornerLayer;
_overlayView = new AdornedElement();
_overlayView.AllowDrop = true;
_adornerLayer.Add(this);
}
и создается в главном окне
private void Window_Loaded(object sender, RoutedEventArgs e)
{
adornerLayer = AdornerLayer.GetAdornerLayer(MyTopGridWithButtonInIt);
ShellOverlayAdorner shell = new ShellOverlayAdorner(MyTopGridWithButtonInIt, adornerLayer);
}
Я вообще не получаю никаких событий из-под моего контроля, т.е. никаких щелчков мышью, нажатие мыши, нажатие кнопок. Я даже не могу нажать на кнопку в слое Adorner. Что я сделал не так?