Silverlight中活动页面上的调用方法

时间:2012-11-12 02:39:01

标签: c# silverlight

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

如果我想要一个单独的类来处理时间保持,如下所示:

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

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

最好的方法是什么?

1 个答案:

答案 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);
    }
}