2012-03-14 32 views
0

我正在使用WPF,XAML和C#来生成一个网格,该网格侦听具有我想要相对显示的日期字段的模型源。目前它与.ToString()一起显示,但我的实际问题是,我将如何在每秒中实现相对时间(或其活动格式)。是否有强制重新呈现用户界面的首选方法,因为数据不会始终保持不变(每秒只需重绘一个列,并调用相应的格式化方法)。将相对时间(“5秒前”)渲染到网格中并实时更新(WPF)?

回答

1

如果您绑定到视图模型,那么您可以每秒钟更新一次属性更改。

public class MyViewModel : ViewModelBase 
    { 
     private void OnTimerTick() 
     { 
      OnPropertyChanged("Date"); 
     } 

     public string Date 
     { 
      get{ return DateTime.Now().AddSeconds(-5).ToString(); 
     } 
    } 

凡ViewModelBase实现INotifyPropertyChanged的和你使用的是DispatcherTimer提高计时器滴答事件。

+0

嗯,目前它绑定到一个可观察的集合,而集合是viewmodel的一个属性。我应该改变我的方法吗? – Tower 2012-03-14 12:45:34

+0

因此,集合中的每个单独项目都有一个时间属性?如果是这样,您可以遍历集合引发每个项目的OnPropertyChange。 – Phil 2012-03-14 12:46:57