Frage

Edit: Die ursprüngliche Prämisse der Frage war falsch, so die Frage überarbeitet:

Grundsätzlich möchte ich eine Schaltfläche nur dann sichtbar sein, wenn die Maus über die mit Benutzersteuerung ist. Hier ist die vereinfachte versin von dem, was ich habe:

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="MyNamespace.MyUserControl"
    x:Name="myUserControl">
    <Textbox>Some Text</Textbox>
    <Button Visibility="{Binding ElementName=myUserControl, Path=IsMouseOver, Converter={StaticResource mouseOverVisibilityConverter}}" />
</UserControl>

Welche funktioniert, wenn die Maus über das Textfeld ist, aber nirgendwo sonst in der Benutzerkontrolle.

War es hilfreich?

Lösung

ich die Frage überarbeitete einmal Thomas die falsche Annahme in meiner ursprünglichen Frage wies darauf hin, das mich führen, den wahren Grund zu entdecken, es funktioniert nicht in dieser Beitrag .

Grundsätzlich ist die Benutzersteuerung hat einen Null-Hintergrund (im Gegensatz zu transparent gegen), die offensichtlich macht es auf die Maus unsichtbar, auch mit IsHitTestVisible Satz wahr ist, so war die Lösung Hintergrund hinzufügen = „Transparent“, um die Benutzersteuerung.

Andere Tipps

  

Ich erkennen, dass Usercontrol nicht über eine IsMouseOver Eigenschaft

Aber es ist ... IsMouseOver in der UIElement-Klasse definiert, von dem Usercontrol (indirekt) erbt

Sie können diese Eigenschaft in einer abgeleiteten Klasse implementieren. Ich habe vor, diese Art der Sache zu tun.

Private _IsMouseOver As Boolean = False

Protected Overrides Sub OnMouseEnter(ByVal sender As Object, ByVal e As MouseEventArgs)
     _IsMouseOver = True
     MyBase.OnMouseEnter(sender, e)
End Sub

Protected Overrides Sub OnMouseLeave(ByVal sender As Object, ByVal e As MouseEventArgs)
     _IsMouseOver = False
     MyBase.OnMouseLeave(sender, e)
End Sub

Public ReadOnly Property IsMouseOver As Boolean()
    Get
        Return _IsMouseOver
    End Get
End Property
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top