Windows Phone 7永久更新文本块

时间:2011-12-23 02:54:59

标签: c# windows-phone-7 stopwatch

我正在尝试为Windows Phone 7编写某种秒表。为了测量经过的时间,我使用了秒表类。要打印输出,我使用文本块。但我希望文本块能够始终显示已用时间。

Unitl现在我只能更新事件上的文本块(我使用了button_Click事件) 我尝试了一段时间(真实)循环,但这只会冻结手机。

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

StopWatch类没有任何事件,因此如果要绑定,则必须编写自己的类或使用计时器轮询StopWatch。 您可以使用Binding将TextBlock中的属性绑定到秒表。首先将此DataContext绑定添加到页面xaml。

 <phone:PhoneApplicationPage
      DataContext="{Binding RelativeSource={RelativeSource Self}}" >

然后像这样绑定你的文本块

 <TextBlock x:Name="myTextBlock" Text="{Binding StopwatchTime}" />

并在后面的代码中添加DependancyProperty和必要的计时器代码。

    public static readonly DependencyProperty StopwatchTimeProperty =
        DependencyProperty.Register("StopwatchTime", typeof(string), typeof(MainPage), new PropertyMetadata(string.Empty));

    public string StopwatchTime
    {
        get { return (string)GetValue(StopwatchTimeProperty); }
        set { SetValue(StopwatchTimeProperty, value); }
    }

和某处的计时器代码......

        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(0.2); // customize update interval
        timer.Tick += delegate(object sender, EventArgs e)
        {
            StopwatchTime = sw.Elapsed.Seconds.ToString(); // customize format
        };
        timer.Start();