J'ai une bordure rouge déplacée par une animation (avec un RenderTransform) et la bordure bleue en dessous gère l'événement MouseEnter.Événement MouseEnter non déclenché pendant une animation
Malheureusement, MouseEnter n'est pas déclenché lorsque la souris entre dans la bordure bleue (parce que la bordure rouge s'est éloignée) mais lorsque la souris est déplacée.
L'exemple ci-dessous a été testé dans Silverlight mais je crois qu'il en est de même dans WPF.
EDIT: après d'autres tests cela fonctionne dans WPF. Est-ce un bug comme le suggère MrJul ou l'une des "fonctionnalités manquantes" dans Silverlight?
XAML
<Grid x:Name="borders" Width="40" Height="20">
<Grid.Resources>
<Storyboard x:Key="blueMove">
<DoubleAnimation Duration="0:0:3" From="0" To="40" Storyboard.TargetName="redBorder"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.Y)"/>
</Storyboard>
</Grid.Resources>
<Border Background="Blue" MouseEnter="Border_MouseEnter" />
<Border x:Name="redBorder" Background="Red" MouseLeftButtonDown="Border_MouseLeftButtonDown">
<Border.RenderTransform>
<TransformGroup>
<TranslateTransform Y="0"/>
</TransformGroup>
</Border.RenderTransform>
</Border>
</Grid>
code C# derrière
private void Border_MouseEnter(object sender, MouseEventArgs e)
{
// Only called at the first MouseMove
}
private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
(borders.Resources["blueMove"] as Storyboard).Begin();
}
Je viens de soumettre ceci comme un bug sur connect.microsoft.com, mais je suis toujours à la recherche d'une solution de contournement. – Mart
Microsoft Connect a envoyé le commentaire suivant: "Nous redirigeons ce problème vers le groupe approprié de l'équipe de produit Visual Studio pour le triage et la résolution." ce qui ne signifie pas que cela a été accepté comme un bug. – Mart
Microsoft Connect a finalement envoyé une réponse décevante: c'est un problème connu (mais pas un bug). En effet, comme indiqué sur la page d'événement MouseEnter (http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseenter%28VS.95%29.aspx): "MouseEnter n'est pas déclenché si la souris pointeur (ou la pointe du stylet) reste stationnaire, et un objet avec un gestionnaire MouseEnter a sa position animée ou autrement réglé pour se déplacer sous le pointeur de la souris " Cela signifie pas de solution pour ce problème. – Mart