0

Silverlightで時計アプリケーションを構築しようとしています。私のアプリケーションには複数のページがあり、1つはアナログ用、1つはデジタル用、もう1つはタイマー用です。

次のように計時を処理する別のクラスが必要な場合:

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

私はあなたが何をしようとしているのか本当に理解していません。「メソッドがそのページイベントハンドラーを使用できるように、現在のページを取得するにはどうすればよいですか?」

3つのページがあり、3つのページすべての間で時間を同期しようとしている場合は、静的な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 に答える