2009-10-02 5 views
0

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(); 
} 
+0

Je viens de soumettre ceci comme un bug sur connect.microsoft.com, mais je suis toujours à la recherche d'une solution de contournement. – Mart

+0

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

+0

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

Répondre

0

Cela fonctionne très bien dans WPF, mais pas dans Silverlight si on peut supposer qu'il est un bug possible dans Silverlight. Je vous suggère de remplir un rapport de problème sur Connect.

+0

Merci MrJul. Avant de soumettre ceci comme un bogue, je voudrais déterminer s'il ne s'agit pas d'une fonctionnalité intentionnellement manquante dans Silverlight. Aussi est-il possible d'avoir une solution de contournement. Je ne peux vraiment pas penser à un moyen de déclencher l'événement une fois et au bon moment. – Mart

+0

Vous aviez raison, mais ils appellent est un problème, pas un bug. – Mart

Questions connexes