0

我正在尝试在 Silverlight 中构建一个时钟应用程序。我的应用程序有多个页面,一个用于模拟,一个用于数字,一个用于计时器。

如果我想有一个单独的类来处理计时,如下所示:

private void startTimer()
    {
        DispatcherTimer myDispatcherTimer = new DispatcherTimer();
        myDispatcherTimer.Interval = new TimeSpan(0,0,1);
        myDispatcherTimer.Tick += new EventHandler(eachClick);
        myDispatcherTimer.Start();
    }

如何获取显示的当前页面,以便该方法可以使用该页面的事件处理程序?

解决此问题的最佳方法是什么?

4

1 回答 1

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);
    }
}
于 2012-11-12T02:50:18.820 回答