Windows Phone 7 постоянно обновляет текстовый блок - PullRequest
1 голос
/ 23 декабря 2011

Я пытаюсь запрограммировать какой-нибудь секундомер для Windows Phone 7. Для измерения истекшего времени я использую класс Секундомер. Для печати вывода я использую текстовый блок. Но я бы хотел, чтобы текстовый блок все время показывал истекшее время.

Теперь я могу обновлять текстовый блок только по событиям (я использую событие button_Click) Я пробовал некоторое время (правда), но это только зависает телефон.

Кто-нибудь знает, как я могу это исправить?

1 Ответ

2 голосов
/ 23 декабря 2011

Класс 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();
...