我有一个模型集合,该模型集合在我的大部分代码中都被引用。
public class TraceEntryQueue
{
private readonly Queue<TraceEntry> _logEntries;
public TraceEntryQueue()
{
_logEntries = new Queue<TraceEntry>();
}
public void AddEntry(TraceEntry newEntry)
{
_logEntries.Enqueue(newEntry);
}
public List<TraceEntry> GetAsList()
{
return _logEntries.ToList();
}
}
此收藏集是我的观点之一。
public class LoggingViewModel : ViewModelBase
{
private ICollectionView _customers;
public ICollectionView Customers
{
get
{
return _customers;
}
private set
{
_customers = value;
}
}
public LoggingViewModel(TraceEntryQueue traceQueue)
{
Customers = CollectionViewSource.GetDefaultView(traceQueue.GetAsList());
Customers.SortDescriptions.Add(new SortDescription("Index", ListSortDirection.Descending));
Customers.Refresh();
}
}
问题是当我通过添加新条目时,如何通知我的 View 重新加载集合
public void AddEntry(TraceEntry newEntry)
{
_logEntries.Enqueue(newEntry);
}
最佳答案
使用可观察的集合而不是队列。当集合更新(添加/删除等)时,这将自动通知您的 View
public class TraceEntryQueue
{
private readonly ObservableCollection<TraceEntry> _logEntries;
public TraceEntryQueue()
{
_logEntries = new ObservableCollection<TraceEntry>();
}
public void AddEntry(TraceEntry newEntry)
{
_logEntries.Add(newEntry);
}
public ObservableCollection<TraceEntry> GetLogEntries()
{
return _logEntries;
}
}
关于c# - 通知ViewModel模型集合已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14520788/