香港专业教育学院在这已经工作了几天,但不能似乎想出了一个解决方案保持对焦/的SelectedItem的DataGrid的ItemsSource更改后
我有代码上刷新每隔几秒钟DataGrid
定时器
我试过很多刷新选项,但最终他们都失去了用户的关注,有时也是SelectedItem
继承人我的代码:
AddHandler bw.RunWorkerCompleted, Function(sender As Object, e As ComponentModel.RunWorkerCompletedEventArgs)
Dim lst = e.Result
Dim lst2 = CType(lst, List(Of Object)).OfType(Of INotifyPropertyChanged)()
'If Items.Count = 0 Then
Dim a = SelectedItem
Collection.Clear()
Collection.AddRange(lst2)
SelectedItem = a
'ItemsSource = lst
'End If
'For Each rw In lst
' Dim mtch = Collection.Where(Function(x) x.GetHashCode = rw.GetHashCode)
'Next
我留下评论,所以你可以看到不同的方法我试过
结果:
,如果我直接(在注释为)设置ItemsSource
与结果,那么SelectedItem
和Keyboard.FocusedElement
保持稳住,直到上面的代码的结束,但是这个代码的结束和下一个节拍它们都变成Nothing
,如果我与ObservableCollection
然后SelectedItem
去介于两者之间,我清除收集一旦丢失, Keyboard.FocusedElement
只会在滴答声之间丢失。虽然的SelectedItem可以在这里保留有一个临时的后盾变量
所以关键是我们如何从数据库中刷新项目,同时仍保持(最重要的)键盘焦点
,是的,我知道, ObservableCollections
未被“制造”重置。事实上,我不是真的有兴趣使用一个。它只是有一个保留SelectedItem
P.S.我也尝试过关注几个事件(OnItemsSourceChanged
,SourceUpdated
...),但他们没有在正确的时间开除,或者根本没有开火
有什么想法?
ID真正最欣赏
谢谢
检查此 - http://stackoverflow.com/questions/12808479/updating-listbox-without-losing-selected-item-wpf – user1221765 2013-05-27 10:18:23
谢谢,在没有人回答这里,我没有在MSDN发布,并得到了一个很好的回答,现在它的工作已经够好了。你设置的链接没有任何消息,我也考虑过将记录1更新为1,但还没有得到它。无论如何感谢您的兴趣! – 2013-05-28 06:52:35
你好Yisman,你可以请发布链接,我可以看到解决方案。它也会帮助我学习。谢谢:) – user1221765 2013-05-28 07:59:06