У меня есть красная рамка, перемещенная анимацией (с 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();
}
Я просто представил это как ошибку на connect.microsoft.com, но я все еще ищу обходное решение. – Mart
Компания Microsoft Connect отправила следующий комментарий: «Мы перенаправляем эту проблему соответствующей группе в составе Visual Studio Team Team для сортировки и разрешения». , что не означает, что это было принято как ошибка. – Mart
Microsoft Connect наконец отправил неутешительный ответ: это известная проблема (но не ошибка). Действительно, как указано на странице событий MouseEnter (http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseenter%28VS.95%29.aspx): «MouseEnter не поднимается, если мышь указатель (или наконечник стилуса) остается неподвижным, а объект с обработчиком MouseEnter имеет анимированную позицию или иным образом отрегулирован для перемещения под указателем мыши « Это означает, что решение для этой проблемы не требуется. – Mart