Как отобразить время изменения внутри TextBlock? - PullRequest
1 голос
/ 13 февраля 2011

Итак, у меня есть секундомер, и все, что я хочу, это чтобы он отображался в текстовом блоке. Как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 14 февраля 2011

Создайте TimerViewModel, который выглядит примерно так:

public class TimerViewModel : INotifyPropertyChanged
{
    public TimerViewModel()
    {
        timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(1);
        timer.Tick += new EventHandler(timer_Tick);
        timer.Start();
        startTime = DateTime.Now;
    }

    private DispatcherTimer timer;
    private DateTime startTime;
    public event PropertyChangedEventHandler PropertyChanged;
    public TimeSpan TimeFromStart { get { return DateTime.Now - startTime; } }

    private void timer_Tick(object sender, EventArgs e)
    {
        RaisePropertyChanged("TimeFromStart");
    }

    private void RaisePropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

Создайте его в своем коде:*

<Grid x:Name="LayoutRoot" Background="White">
    <TextBlock Text="{Binding TimeFromStart}" />
</Grid>

Работает как шарм.Я уверен, что вам нужно немного изменить базовую концепцию, но основная идея заставить DispatcherTimer запустить уведомление PropertyChanged - вот что является ключевым.

1 голос
/ 22 апреля 2011

TimerTextBlock используется для отображения истекшего времени в TextBlock и обновления времени, прошедшего через каждую секунду.Я думаю, вам придется изменить его, чтобы действовать как секундомер.

0 голосов
/ 13 февраля 2011

A Секундомер используется для измерения между двумя точками во времени.Он не генерирует никаких событий, которые могут привести к привязке.Вам нужно использовать своего рода Таймер (ссылка предполагает WPF ... доступны другие параметры ... обновить теги) в вашей модели для создания уведомлений об изменениях.

...