J'essaye de faire une belle "glisser-déposer" dans WPF qui est affichée dans la couche adorner quand quelque chose est glissé dans l'application principale. Le problème est que je ne reçois aucun événement de mon adorateur, même si, selon la documentation, il devrait recevoir tous les événements d'entrée, car il est dans un ordre z plus élevé.Aucun événement passé à WPF couche adorner
Pour déboguer mon problème, j'ai créé un exemple très simple où j'ai un contrôle utilisateur avec seulement un bouton dedans. Ce contrôle utilisateur est affiché dans la couche Adorner, mais je ne peux pas cliquer sur le bouton. Pourquoi? Qu'est ce que j'ai mal fait?
Ma classe Adorner est construit comme ceci:
public ShellOverlayAdorner(UIElement element, AdornerLayer adornerLayer)
:base(element)
{
_adornerLayer = adornerLayer;
_overlayView = new AdornedElement();
_overlayView.AllowDrop = true;
_adornerLayer.Add(this);
}
et est créé dans la fenêtre principale par
private void Window_Loaded(object sender, RoutedEventArgs e)
{
adornerLayer = AdornerLayer.GetAdornerLayer(MyTopGridWithButtonInIt);
ShellOverlayAdorner shell = new ShellOverlayAdorner(MyTopGridWithButtonInIt, adornerLayer);
}
Je ne reçois aucun événement du tout de mon contrôle, à savoir pas de clics de souris , souris sur, clics de bouton. Je ne peux même pas cliquer sur le bouton dans la couche adorner. Qu'est ce que j'ai mal fait?
Cela fonctionne bien pour moi ... Etes-vous sûr n'avez pas défini IsHitTestVisible false sur votre Adorner? –
Hmmm .. Etrange, parce que je reçois ceci pour tous les projets de test que je crée. Non, je n'ai pas défini IsHitTestVisible sur false. J'ai testé le réglage à la fois vrai et faux pour obtenir un changement, mais rien ne se passe. – Johanna