在我的 Windows 8 应用程序中,我想在 TextBlock 元素中显示当前时间。时间值应该每秒更新一次。以下代码可以正常工作,但我认为这不是理想的解决方案。那么有没有更好的方法来做到这一点?
public class Clock : Common.BindableBase {
private string _time;
public string Time {
get { return _time; }
set { SetProperty<string>(ref _time, value); }
}
}
private void startPeriodicTimer() {
if (PeriodicTimer == null) {
TimeSpan period = TimeSpan.FromSeconds(1);
PeriodicTimer = ThreadPoolTimer.CreatePeriodicTimer((source) => {
Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() => {
DateTime time = DateTime.Now;
clock.Time = string.Format("{0:HH:mm:ss tt}", time);
[...]
});
}, period);
}
}
在 LoadState 方法中:
clock = new Clock();
clock.Time = string.Format("{0:HH:mm:ss tt}", DateTime.Now);
currentTime.DataContext = clock;
startPeriodicTimer();