香港專業教育學院在這已經工作了幾天,但不能似乎想出了一個解決方案保持對焦/的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