我有一个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