Hallo,
ich habe einen kleinen Dialog in ein Fenster gebaut, dass einfach verschwinden soll, sobald die Maus über dessen Grenzen zieht. Nur irgendwie kriege ich das nicht hin. Das XAML sieht in etwa so aus:
[highlight=xml]
<Window x:Class="winPrioPosition"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="winPrioPosition" Height="129" Width="248" ResizeMode="NoResize" WindowStyle="None">
<Grid x:Name="gAssignmentDetails">
<ContentControl x:Name="cAssignmentDetails" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top" Height="126" Width="245" BorderThickness="1" BorderBrush="Black">
<Grid Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}">
<Grid.Effect>
<DropShadowEffect/>
</Grid.Effect>
... diverse Controls
</Grid>
</ContentControl>
</Grid>
</Window>[/highlight]
Das MouseLeave-Event ist dieses (ich habe eine Textbox in dem Dialog, befindet sich darin der Cursor, soll der Dialog natürlich nicht verschwinden):
[highlight=vbnet]
Private Sub cAssignmentDetails_MouseLeave(sender As Object, e As MouseEventArgs) Handles cAssignmentDetails.MouseLeave
If Not txtTimeValueToAssign.IsFocused Then Me.Hide()
End Sub[/highlight]
Die ganze Sache funktioniert nur, wenn ich den Dialog über den unteren oder rechten Rand verlasse, quasi über den Schatten, mit dem ich das innere Grid versehen habe; verlasse ich nach oben oder links, wird das Fenster nicht ausgeblendet. Egal, ob ich das Ereignis nun an das Window oder das äußere Grid binde.
Wie kriege ich das besser hin? Bin für jeden Tipp dankbar ...
Dave
ich habe einen kleinen Dialog in ein Fenster gebaut, dass einfach verschwinden soll, sobald die Maus über dessen Grenzen zieht. Nur irgendwie kriege ich das nicht hin. Das XAML sieht in etwa so aus:
[highlight=xml]
<Window x:Class="winPrioPosition"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="winPrioPosition" Height="129" Width="248" ResizeMode="NoResize" WindowStyle="None">
<Grid x:Name="gAssignmentDetails">
<ContentControl x:Name="cAssignmentDetails" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top" Height="126" Width="245" BorderThickness="1" BorderBrush="Black">
<Grid Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}">
<Grid.Effect>
<DropShadowEffect/>
</Grid.Effect>
... diverse Controls
</Grid>
</ContentControl>
</Grid>
</Window>[/highlight]
Das MouseLeave-Event ist dieses (ich habe eine Textbox in dem Dialog, befindet sich darin der Cursor, soll der Dialog natürlich nicht verschwinden):
[highlight=vbnet]
Private Sub cAssignmentDetails_MouseLeave(sender As Object, e As MouseEventArgs) Handles cAssignmentDetails.MouseLeave
If Not txtTimeValueToAssign.IsFocused Then Me.Hide()
End Sub[/highlight]
Die ganze Sache funktioniert nur, wenn ich den Dialog über den unteren oder rechten Rand verlasse, quasi über den Schatten, mit dem ich das innere Grid versehen habe; verlasse ich nach oben oder links, wird das Fenster nicht ausgeblendet. Egal, ob ich das Ereignis nun an das Window oder das äußere Grid binde.
Wie kriege ich das besser hin? Bin für jeden Tipp dankbar ...
Dave
Comment