Я сделал нечто подобное, что могло бы помочь вам.По сути, я хотел показать, сколько времени было загружено какое-то оборудование.У меня был вид в представлении, который был привязан к свойству.Затем я создал диспетчер, который каждые 50 мс вызывал метод, который обновлял свойство.В приведенном ниже примере он запускается при вызове конструктора для View-Model.
XAML
<Label Grid.Row="5" Grid.Column="2" Content="{Binding TimePortModuleIsUp}" />
View-Model
private string timePortModuleIsUp;
/// <summary>
/// Gets / Sets how long the port module has been booted for.
/// </summary>
public string TimePortModuleIsUp
{
get
{
return timePortModuleIsUp;
}
Set
{
timePortModuleIsUp = value;
OnPropertyChanged("TimePortModuleIsUp");
}
}
Создание объекта DispatcherTimer.
private DispatcherTimer t;
Конструктор в View-Model
Это создает объект диспетчера, который вызывает t_tick каждые 50 мс и запускает его.
// Create a dispatcher that calls t_tick every 50 ms.
t = new DispatcherTimer(new TimeSpan(0, 0, 0, 0, 50), DispatcherPriority.Background, t_Tick, Dispatcher.CurrentDispatcher);
// Start the timer.
t.IsEnabled = true;
и, наконец, метод, который являетсявызывается каждые 50 мс, обновляя свойство, с которым связана метка.
/// <summary>
/// Method that updates a property representing how long the port module has been booted for.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void t_Tick(object sender, EventArgs e)
{
this.TimePortModuleIsUp = new DateTime((DateTime.Now - this.ModuleBootTime).Ticks).ToString("HH:mm:ss");
}