Code to Achieve your Requirement
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;
});
});
}
OR on Demand for 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();
}