代码之家  ›  专栏  ›  技术社区  ›  Mart

在动画期间未激发MouseEnter事件

  •  0
  • Mart  · 技术社区  · 16 年前

    我有一个由动画移动的红色边框(带有renderTransform),下面的蓝色边框处理mouseEnter事件。

    不幸的是,当鼠标进入蓝色边框(因为红色边框已经移开)但移动鼠标时,不会触发鼠标输入。

    下面的示例在Silverlight中进行了测试,但我相信在WPF中也会发生同样的情况。

    编辑:在进一步测试后,这在WPF中工作。这是mrjul建议的bug还是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();
    }
    
    1 回复  |  直到 16 年前
        1
  •  0
  •   Julien Lebosquain    16 年前

    这在WPF中很好,但在Silverlight中不起作用,因此可以假定它是Silverlight中的一个可能的bug。我建议你填写一份关于 Connect .