Windows Phone 7 永久更新文本块

发布于 2024-12-22 14:26:44 字数 201 浏览 0 评论 0原文

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

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

有人对如何解决这个问题有好主意吗?

I am trying to program some kind of stopwatch for Windows Phone 7. To measure the elapsed time I use the Stopwatch class. To print the output I use a textblock. But I would like the textblock to show the elapsed time all the time .

Unitl now I can only update the textblock on events (I use a button_Click event)
I tried a while(true) loop but this only freezes the phone.

Has anyone a good idea on how I can fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请止步禁区 2024-12-29 14:26:44

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();

The StopWatch class doesn't have any events, so if you want to bind, you have to either write your own class or poll the StopWatch with a timer.
You can use Binding to bind properties from the TextBlock to a stopwatch. First add this DataContext binding to your page xaml.

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

Then bind your textblock like so

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

and in the code behind, add DependancyProperty and the necessary timer code.

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

and the timer code somewhere...

        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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文