我有一個故事板播放動畫時MouseLeave
觸發了特定的控制。添加延遲鼠標離開故事板
我想MouseLeave
被觸發後,引入500毫秒的延遲,並檢查鼠標在控制不再。只有然後播放控件。如果用戶在500毫秒內將鼠標移回控件上,我不需要播放故事板動畫。如何實現這一目標?
我有一個故事板播放動畫時MouseLeave
觸發了特定的控制。添加延遲鼠標離開故事板
我想MouseLeave
被觸發後,引入500毫秒的延遲,並檢查鼠標在控制不再。只有然後播放控件。如果用戶在500毫秒內將鼠標移回控件上,我不需要播放故事板動畫。如何實現這一目標?
代碼來實現您的要求
private void UIElement_OnMouseLeave(object sender, MouseEventArgs e)
{
var uiElement = sender as UIElement;
uiElement.MouseLeave -= UIElement_OnMouseLeave;
Task.Factory.StartNew(() =>
{
Thread.Sleep(1000); // or 500ms
Dispatcher.Invoke(() =>
{
if (!uiElement.IsMouseOver)
{
// Animation Code Goes Here;
}
uiElement.MouseLeave += UIElement_OnMouseLeave;
});
});
}
點播或爲Tarec
private readonly DispatcherTimer _dispatcherTimer = new DispatcherTimer
{
Interval = new TimeSpan(0,0,0,0,1000),
};
_dispatcherTimer.Tick += (sender, args) =>
{
_dispatcherTimer.Stop();
if (!uIElement.IsMouseOver)
{
// Animation Code Goes Here;
}
};
private void UIElement_OnMouseLeave(object sender, MouseEventArgs e)
{
// Reset Timer if Mouse Leave
_dispatcherTimer.Stop();
_dispatcherTimer.Start();
}
設置一個標誌。在MouseLeave
上設置標誌爲false
,在MouseEnter
上設置爲true
。創建一個方法,如果isMouseOver == false
觸發動畫,並將其附加到具有500ms延遲的定時器。計時器本身應該在MouseLeave
事件上啓動/復位,並在MouseEnter
上停止。
編輯: 當然,您應該使用IsMouseOver
屬性而不是自定義標誌(如果可用)。
這都可以在XAML來完成。只需將故事板的開始時間設置爲00:00:00.5,並在鼠標進入控制時停止故事板。 – Silvermind