wpf - 在不丢失单元格焦点的情况下刷新 WPF DataGrid

标签 wpf datagrid timer focus refresh

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

相关文章:

wpf - IObservable含糊不清的引用错误

c# - 在运行时将 byte[] 加载到 System.Windows.Controls.Image

javascript - Knockout.js SimpleGrid 无法正确渲染

c# - 在数据网格中编辑当前选定的项目

javascript - 如果 JavaScript 条件为 true,则执行 PHP 脚本

wpf - 一个 View 可以有两个 View 模型作为它的数据上下文吗?

wpf 组合框项目源 Collection View 源与直接绑定(bind)

wpf - DataGrid 是 WPF 中的必需品吗?

ios - Timer.scheduledTimer 在 swift 3 中不起作用

c# - C# .NET/Mono 中精确可靠的步进计时