显示当前时间WPF

我发现定期显示当前时间更新的唯一方法是使用计时器。 当然,我可以实现INotifyPropertyChanged和一些在UI上使用的特殊属性,但是这个实现AFAIK也需要Timer 。 比如像这里 。 有没有更好的方式来显示当前时间?

编辑

澄清一下:有没有任何声明性的方法让它在没有使用XAML语法的计时器的情况下实时工作?

  

没有什么能阻止我在这里使用计时器。 我只是想知道是否有更优雅和紧凑的方式来实现这一点。

WPF是一种静态标记语言。 据我所知,纯XAML中没有一种机制可以提供您正在寻找的function。

如果要避免直接使用计时器,可以使用“任务”将其抽象出来。

MainWindow XAML:

      

代码背后:

 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new CurrentTimeViewModel(); } } public class CurrentTimeViewModel : INotifyPropertyChanged { private string _currentTime; public CurrentTimeViewModel() { UpdateTime(); } private void UpdateTime() { Task.Run(() => { CurrentTime = DateTime.Now.ToString("G"); Task.Delay(1000); UpdateTime(); }); } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public string CurrentTime { get { return _currentTime; } set { _currentTime = value; OnPropertyChanged(); } } } 

这可能是你将要获得的更为简洁和肯定的“现代”WPF之一。