Files
DynamicDataDisplay/Charts/PopupTip.cs
2024-02-23 00:46:06 -05:00

54 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls.Primitives;
using System.Threading;
namespace Microsoft.Research.DynamicDataDisplay
{
public class PopupTip : Popup
{
private TimeSpan showDurationInerval = new TimeSpan(0, 0, 10);
private Timer timer;
public void ShowDelayed(TimeSpan delay)
{
if (timer != null)
timer.Change((int)delay.TotalMilliseconds, System.Threading.Timeout.Infinite);
else
timer = new Timer(OnTimerFinished, null, (int)delay.TotalMilliseconds, System.Threading.Timeout.Infinite);
}
public void HideDelayed(TimeSpan delay)
{
if (timer != null)
{
timer.Change((int)delay.TotalMilliseconds, System.Threading.Timeout.Infinite);
}
else
timer = new Timer(OnTimerFinished, null, (int)delay.TotalMilliseconds, System.Threading.Timeout.Infinite);
}
public void Hide()
{
if (timer != null)
{
timer.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite);
}
this.IsOpen = false;
}
private void OnTimerFinished(object state)
{
this.Dispatcher.BeginInvoke(new Action(() =>
{
bool show = !this.IsOpen;
this.IsOpen = show;
if (show)
HideDelayed(showDurationInerval);
}));
}
}
}