我有一个列表视图绑定到实体对象的集合视图(称为消息)
当消息对象集合更改(调度程序计时器)时,会触发列表视图项绑定刷新。
发生这种情况时,列表视图中当前选定的项目将被取消选择。
如何对 listview 项目集合进行 LINQ 搜索以查找某个 id 的消息对象并重新选择它?
int id = ((Message)lvMessages.SelectedItem).Id;
lvMessages.DataContext = service.Messages;
ICollectionView view = CollectionViewSource.GetDefaultView(lvMessages.ItemsSource);
view.Filter = new Predicate<object>(FilterMessageItem);
//var li = lvMessages.Items.Cast<Message>().Where(m => m.Id == id).SingleOrDefault();
lvMessages.SelectedItem = li;
我不确定如何设置 Linq 查询,因为我在注释行收到此错误...
无法将 System.Collections.Generic.IEnumerable 类型隐式转换为“BusinessObjects.Message”。存在显式转换(您是否缺少演员表?)
也许有更好的方法来使用集合中更改的项目填充列表视图?没有把握。