0
我正在使用WPF,XAML和C#来生成一个网格,该网格侦听具有我想要相对显示的日期字段的模型源。目前它与.ToString()
一起显示,但我的实际问题是,我将如何在每秒中实现相对时间(或其活动格式)。是否有强制重新呈现用户界面的首选方法,因为数据不会始终保持不变(每秒只需重绘一个列,并调用相应的格式化方法)。将相对时间(“5秒前”)渲染到网格中并实时更新(WPF)?
我正在使用WPF,XAML和C#来生成一个网格,该网格侦听具有我想要相对显示的日期字段的模型源。目前它与.ToString()
一起显示,但我的实际问题是,我将如何在每秒中实现相对时间(或其活动格式)。是否有强制重新呈现用户界面的首选方法,因为数据不会始终保持不变(每秒只需重绘一个列,并调用相应的格式化方法)。将相对时间(“5秒前”)渲染到网格中并实时更新(WPF)?
如果您绑定到视图模型,那么您可以每秒钟更新一次属性更改。
public class MyViewModel : ViewModelBase
{
private void OnTimerTick()
{
OnPropertyChanged("Date");
}
public string Date
{
get{ return DateTime.Now().AddSeconds(-5).ToString();
}
}
凡ViewModelBase实现INotifyPropertyChanged的和你使用的是DispatcherTimer提高计时器滴答事件。
嗯,目前它绑定到一个可观察的集合,而集合是viewmodel的一个属性。我应该改变我的方法吗? – Tower 2012-03-14 12:45:34
因此,集合中的每个单独项目都有一个时间属性?如果是这样,您可以遍历集合引发每个项目的OnPropertyChange。 – Phil 2012-03-14 12:46:57