我有一个分配给人员的ObservableCollection,还有一个PersonViewModel和一个PeopleViewModel
_people = GetAll().ToList();
List<PersonViewModel> allPeople = (from person in _people
select new PersonViewModel(person)).ToList();
AllPeople = new ObservableCollection<WorkOrderListItemViewModel>(allOrders);
AllPeopleCollection.Source = AllPeople;
其中AllPeopleCollection
是集合视图源类型的公共属性,并且AllPeople
是ObservableCollection类型的公共属性
我需要更改单击列表视图中某行时使用的图标。但要更新视图,我需要再次读取整个列表。由于我的列表有100多条记录,刷新列表需要很长时间。
有没有一种方法,我可以只刷新列表中的特定项目,并刷新它的UI。
2条答案
按热度按时间5f0d552i1#
代码:
tgabmvqs2#
首先,在wpf的ListView面前,记录计数实际上什么都不是,因为它使用了VirtualizingStackPanel。
除了PropertyChange Notification的确切解决方案之外,您还应该考虑一下deferred execution的概念,您似乎将所有内容转换为一个列表,这将导致立即强制枚举结果集。
让我们考虑一下您的代码:
让我们稍微调整一下:
因此,您可以避免创建临时列表。
此外,即使
GetAll()
方法不返回IEnumerable,也可以使其返回IEnumerable。你可以看看
IEnumerable
IQueryable
yield