Обновить WPF DataGrid без потери фокуса ячейки

У меня есть WPF DataGrid с некоторыми данными, привязанными к классам сущностей LINQ to SQL. Один столбец - это часы, показывающие время полета данного рейса в воздухе, которое рассчитывается с использованием логики в частичном классе Flight. У меня есть таймер, вызывающий datagrid.Items.Refresh каждые 2 секунды для обновления часов.

Обновление работает нормально, но теперь я добавляю сочетания клавиш. Перемещение по ячейкам с помощью стрелок на клавиатуре отлично работает с выключенным таймером, но с включенным таймером обновления сфокусированная ячейка (фактически вся сетка данных) теряет фокус.

Мне нужно либо каким-то образом поддерживать фокус (предпочтительно), либо отключать таймер всякий раз, когда DataGrid находится в фокусе. Кажется, я даже не могу заставить последний работать. Я пробовал:

if (!dataGrid.IsFocused)
    dataGrid.Items.Refresh();

и

if (!dataGrid.IsKeyboardFocused)
        dataGrid.Items.Refresh();

для таймера, но эти свойства возвращают false, даже когда сетка данных сфокусирована.

Есть идеи?

8
задан Anders 26 March 2011 в 14:07
поделиться