Я пытаюсь создать приятную зону перетаскивания в WPF, которая отображается в слое adorner, когда что-то перетаскивается в основное приложение. Проблема в том, что я не получаю никаких событий от моего поклонника, хотя он, согласно документации, должен получать все входные события, так как он находится в более высоком порядке z.Нет событий, переданных WPF adorner layer
Чтобы отладить мою проблему, я создал очень простой пример, когда у меня есть пользовательский элемент управления, в котором есть только кнопка. Этот пользовательский элемент управления отображается на уровне adorner, но я не могу нажать кнопку. Зачем? Что я сделал не так?
Мой класс 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. Что я сделал не так?
Это работает хорошо для меня ... ты уверен, что вы не установили IsHitTestVisible ложь на вашем Adorner? –
Хммм .. Странно, потому что я получаю это для всех тестовых проектов, которые я создаю. Нет, я не установил IsHitTestVisible в false. Я проверил настройку на true и false, чтобы получить изменения, но ничего не происходит. – Johanna