我有一个 WPF DataGrid,其中一些数据绑定(bind)到 LINQ to SQL 实体类。一列是显示给定航类的飞行时间的时钟,该时间是使用 Flight 的部分类中的逻辑计算的。我有一个计时器,每 2 秒调用一次 datagrid.Items.Refresh 来更新时钟。
刷新工作正常,但现在我正在添加键盘快捷键。使用键盘箭头在单元格中导航可以在计时器关闭的情况下正常工作,但在启用刷新计时器的情况下,聚焦的单元格(实际上是整个数据网格)会失去焦点。
我需要以某种方式保持焦点(首选)或在 DataGrid 聚焦时禁用计时器。我什至似乎无法让后者工作。我试过了:
if (!dataGrid.IsFocused)
dataGrid.Items.Refresh();
和
if (!dataGrid.IsKeyboardFocused)
dataGrid.Items.Refresh();
对于计时器,但即使数据网格被聚焦,这些属性也会返回 false。
有任何想法吗?
最佳答案
最好的方法是不要使用 dataGrid.Items.Refresh() 作为更新机制。听起来底层对象已经单独更新了。如果他们实现了 INotifyPropertyChanged,您应该尝试将列的绑定(bind)模式设置为 TwoWay Binding:
<DataGridTextColumn Binding="{Binding xyz, Mode=TwoWay}"/>
关于wpf - 在不丢失单元格焦点的情况下刷新 WPF DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5442830/