2012-05-14 62 views
0

我有一个响应事件,并从事件数据添加到“ListView控件”,我有一个简单的类,它有3个应用程序属性。WPF ListView的更新列表项的值之后,新项目添加(值随时间变化)

的ListView持有该数据:

public string Code { get; set; } 
    public string Status { get; set; } 
    public TimeAgo Time { get; set; } 

类TIMEAGO是:

public class TimeAgo 
{ 

    private DateTime _time; 

    public TimeAgo(DateTime time) { _time = time; } 

    public override string ToString() 
    { 
     return new TimeSpan(DateTime.Now.Ticks - _time.Ticks).Seconds + " seconds ago"; 
    } 
} 

所以,每当一个新的事件正在发生的事情我想其他对象进行更新,所以如果我添加一个新的它说“0秒前”,但旧的应该更新并说“15秒前”,以便我可以跟踪更新每个事件发生的时间。

我已经为此搜索了方法,但我尝试过的所有方法都没有奏效。

任何想法?

+0

另外,任何添加“最后”项目的方法都会出现在所有其他项目之上?所以最新的条目是第一个。 – Deukalion

回答

1

只需让Seconds成为您绑定的属性。

为了把在顶部

Insert(0, T item 

对于在通话的ObservableCollection所有项目NotifyPropertyChanged( “秒”);插入后。

+0

我无法在ObservableCollection或ListView上找到NotifyPropertyChanged的任何EventHandler。 – Deukalion

+0

您需要在类上实现iNotifyPropertyChanged。 – Paparazzi

0

这似乎很简单的任务。 “最新的条目是第一” - 您可以简单地通过TimeAgo订购您的数据源(但您必须实现IComparable)

您是否使用MVVM(您将其标记为WPF)?如果是 - 只需使用ObservableCollection Class作为ListView DataSourse。也应该调查this

+0

要实现INotifyPropertyChanged,您需要声明PropertyChanged事件并创建OnPropertyChanged方法。然后,对于每个要更改通知的属性,只要属性更新,就可以调用OnPropertyChanged。只要在setter –

+0

中调用OnPropertyChanged,我就想出了添加Items.Insert(0,new Data()); – Deukalion