我有一个由动画(使用RenderTransform)移动的红色边框,底下的蓝色边框处理MouseEnter事件。在动画过程中未触发MouseEnter事件
不幸的是,当鼠标进入蓝色边框(因为红色边框已移开),但鼠标移动时,MouseEnter未被触发。
以下示例在Silverlight中进行了测试,但我相信WPF中会发生同样的情况。
编辑:进一步测试后,在WPF中的作品。这是JavaJul建议的错误还是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 2009-10-03 08:58:46
Microsoft Connect发送了以下评论: “我们正在将此问题重新分配给Visual Studio产品团队中的相应组进行分类和解决。” 这并不意味着这已被接受为一个错误。 – Mart 2009-10-07 11:30:56
Microsoft Connect终于发送了令人失望的答案:这是一个已知问题(但不是错误)。事实上正如MouseEnter事件页面(http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseenter%28VS.95%29.aspx)所述: “MouseEnter不会引发,如果鼠标指针(或触控笔尖)保持静止,并且带有MouseEnter处理程序的对象将其位置设置为动画或调整为在鼠标指针下移动“ ”这意味着无法解决该问题。 – Mart 2010-02-01 12:54:38