我有一個WPF DataGrid,其中一些數據綁定到LINQ to SQL實體類。一欄是一個時鐘,顯示給定航班的空中飛行時間,這是使用飛行部分班級中的邏輯計算的。我有一個計時器每2秒鐘調用一次datagrid.Items.Refresh來更新時鐘。刷新WPF DataGrid而不會丟失細胞聚焦
刷新工作正常,但現在我添加鍵盤快捷鍵。使用鍵盤箭頭瀏覽單元格可以在關閉計時器的情況下正常工作,但啓用了刷新計時器後,聚焦的單元格(實際上是整個數據網格)失去了焦點。
我需要以某種方式保持焦點(首選)或禁用定時器,只要DataGrid的重點。我甚至不能讓後者工作。我已經試過:
if (!dataGrid.IsFocused)
dataGrid.Items.Refresh();
和
if (!dataGrid.IsKeyboardFocused)
dataGrid.Items.Refresh();
定時器,但這些屬性返回即使在數據網格的重點是假的。
任何想法?
只存儲選定行的索引,刷新後設置selectedIndex – Hukam 2011-03-26 14:16:46
爲什麼不只是在綁定實體的定義中異步調用PropertyChanged,並讓定時器(或部分實體類中的某些邏輯)調用屬性發生更改。然後你可以使用UpdateSource。OnPropertyChanged用於DataGridColumn綁定,這應該(理論上)阻止整個DG刷新並僅刷新更改的實體(從而解決您的焦點問題,並導致更好的性能)。我錯過了什麼嗎? – William 2012-12-14 01:25:08