ich einige XAML-Markup haben, die im Wesentlichen wie folgt aussieht:WPF - Feststellen, ob die Maus über einem UIElement
<Canvas x:Name="A">
<Canvas x:Name="B"/>
</Canvas>
Ich will, um zu bestimmen, ob die Maus über Canvas
ist B.
Wenn ich während klicken Meine Maus ist über Canvas B, Mouse.DirectlyOver gibt Canvas A zurück (wie ich es erwarte). Ich erhalte dann einen Verweis auf Canvas B aus Canvas A, aber wenn ich die IsMouseOver-Eigenschaft von Canvas B überprüfe, wird false zurückgegeben.
Was ist der beste Weg, um zu bestimmen, ob die Maus über Canvas B mit der obigen XAML ist?
Welche Ereignisbehandlung verwenden Sie, um Ihre Überprüfung durchzuführen? Wenn ich ein MouseUp-Ereignis zu Canvas B hinzufüge, gibt Mouse.DirectlyOver Canvas B zurück. Möglicherweise helfen ein wenig mehr Informationen, Ihr Problem aufzuspüren. – Liz
Sicher. Der Canvas befindet sich tatsächlich in einer ControlTemplate für ein ListBoxItem. Ich bearbeite das Auswahl-Ereignis der Listbox und führe ein Routingereignis aus, um ein Pop-up anzuzeigen, das Informationen über das angeklickte Objekt enthält. Der Code, in dem ich überprüfe, wo die Maus vorbei ist, befindet sich im Routingereignishandler. Das Ziel von all dem ist, das Pop-up nicht anzuzeigen, wenn auf den rechten Teil des Listenelements geklickt wird. Ich versuche also, diesen Teil des Listenelements mit einem Canvas zu definieren und dann zu prüfen, ob sich die Maus über diesem Teil des Elements befindet, bevor das Popup angezeigt wird. –
Ich weiß, es gibt andere Möglichkeiten, dies zu tun, aber ich versuche zu vermeiden, etwas anderes als das Auswahl geändert Ereignis zu verwenden. –