【问题标题】:MouseEnter event not fired during an animation动画期间未触发 MouseEnter 事件
【发布时间】:2009-10-02 21:59:26
【问题描述】:

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

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

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

编辑:经过进一步测试,这在 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 上将此作为错误提交,但我仍在寻找解决方法。
  • Microsoft Connect 发送了以下评论:“我们正在将此问题重新发送给 Visual Studio 产品团队中的相应小组进行分类和解决。”这并不意味着这已被视为错误。
  • Microsoft Connect 最终发送了一个令人失望的答案:这是一个已知问题(但不是错误)。确实如 MouseEnter 事件页面 (msdn.microsoft.com/en-us/library/…) 所述:“如果鼠标指针(或触控笔尖端)保持静止,并且具有 MouseEnter 处理程序的对象的位置已动画或以其他方式调整以在鼠标下移动,则不会引发 MouseEnter指针”这意味着该问题没有解决方案。

标签: silverlight xaml mouseenter


【解决方案1】:

这在 WPF 中可以正常工作,但在 Silverlight 中却不行,因此人们会认为这可能是 Silverlight 中的一个错误。我建议您在Connect 上填写问题报告。

【讨论】:

  • 谢谢 MrJul。在将此作为错误提交之前,我想确定这是否不是 Silverlight 中故意缺少的功能。也有可能有一个解决方法。我实在想不出什么方法可以在正确的时间触发事件。
猜你喜欢
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
相关资源
最近更新 更多