Событие MouseEnter не срабатывает во время анимации - PullRequest
0 голосов
/ 03 октября 2009

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

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

Пример ниже тестируется в Silverlight, но я думаю, что то же самое происходит в WPF.

РЕДАКТИРОВАТЬ: после дальнейшего тестирования это работает в WPF. Это ошибка, предложенная MrJul, или одна из «недостающих функций» в Silverlight?

1009 * 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();
}

1 Ответ

0 голосов
/ 03 октября 2009

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

...