2009-10-02 4 views
0

У меня есть красная рамка, перемещенная анимацией (с RenderTransform), а синяя рамка внизу обрабатывает событие MouseEnter.Событие MouseEnter не запускается во время анимации

К сожалению, MouseEnter не запускается, когда мышь попадает на синюю рамку (потому что красная рамка ушла), но когда мышь перемещается.

Образец ниже проверен в Silverlight, но я считаю, что это происходит в WPF.

EDIT: после дальнейших испытаний это работает в WPF. Это ошибка, которую предлагает MrJul или одна из «недостающих функций» в 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> 

C# код позади

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

Я просто представил это как ошибку на connect.microsoft.com, но я все еще ищу обходное решение. – Mart

+0

Компания Microsoft Connect отправила следующий комментарий: «Мы перенаправляем эту проблему соответствующей группе в составе Visual Studio Team Team для сортировки и разрешения». , что не означает, что это было принято как ошибка. – Mart

+0

Microsoft Connect наконец отправил неутешительный ответ: это известная проблема (но не ошибка). Действительно, как указано на странице событий MouseEnter (http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseenter%28VS.95%29.aspx): «MouseEnter не поднимается, если мышь указатель (или наконечник стилуса) остается неподвижным, а объект с обработчиком MouseEnter имеет анимированную позицию или иным образом отрегулирован для перемещения под указателем мыши « Это означает, что решение для этой проблемы не требуется. – Mart

ответ

0

Это прекрасно работает в WPF, но не Silverlight, так можно было бы предположить, что это возможно ошибка в Silverlight. Я предлагаю вам заполнить отчет о проблеме на Connect.

+0

Спасибо MrJul. Прежде чем отправлять это как ошибку, я хотел бы определить, не является ли это намеренно отсутствующей функцией в Silverlight. Также возможно иметь обходное решение. Я действительно не могу придумать способ запуска события один раз и в нужное время. – Mart

+0

Вы были правы, но они называются проблемой, а не ошибкой. – Mart