我有一个由动画(带有 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();
}