我有一個由動畫(使用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