我正在尝试在Silverlight中构建一个时钟应用程序。 我的应用程序有多个页面,一个用于模拟,一个用于数字,一个用于计时器。
如果我想要一个单独的类来处理时间保持,如下所示:
private void startTimer()
{
DispatcherTimer myDispatcherTimer = new DispatcherTimer();
myDispatcherTimer.Interval = new TimeSpan(0,0,1);
myDispatcherTimer.Tick += new EventHandler(eachClick);
myDispatcherTimer.Start();
}
如何获取显示的当前页面,以便该方法可以使用该页面的事件处理程序?
最好的方法是什么?
答案 0 :(得分:0)
我真的不明白你究竟想做什么。 “我如何获取当前页面以便该方法可以使用该页面事件处理程序?”
如果你有三个页面,并且你试图同步它们之间的时间,为什么不创建一个静态的Timer类。
我不知道,也许是这样的:
public static class StaticTimer
{
public delegate void Time(DateTime time);
public static event Time Tick = delegate { };
static StaticTimer()
{
DispatcherTimer myDispatcherTimer = new DispatcherTimer();
myDispatcherTimer.Interval = new TimeSpan(0,0,1);
myDispatcherTimer.Tick += (s,e) => Tick(DateTime.Now);
myDispatcherTimer.Start();
}
}
然后,在每个页面中,只需在创建时订阅Tick事件。
void AnalogPage_OnLoaded( ... )
{
StaticTimer.Tick += someEventHandler;
}
void someEventHandler(DateTime time)
{
if(thisIsCurrentPage)
{
clock.Update(time);
}
}