Я пытаюсь создать красивую «зону перетаскивания» в WPF, которая отображается в слое украшения, когда что-то перетаскивается в основное приложение. Проблема в том, что я не получаю никаких событий от моего украшающего, хотя он, согласно документации, должен получать все входные события, поскольку он находится в более высоком z-порядке.
Чтобы отладить свою проблему, я создал действительно простой пример, в котором у меня есть пользовательский элемент управления, содержащий только кнопку. Этот пользовательский элемент управления отображается в слое украшения, но я не могу нажать кнопку. Почему? Что я сделал не так?
Мой класс украшения устроен так:
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);
}
Я вообще не получаю никаких событий от моего контроля, то есть никаких щелчков мышью, наведения указателя мыши, щелчков кнопок. Я даже не могу нажать кнопку в слое украшения. Что я сделал не так?