Tengo un WPF DataGrid con algunos datos vinculados a las clases de entidad LINQ to SQL. Una columna es un reloj que muestra el tiempo nacido en el aire de un vuelo dado, que se calcula usando la lógica en la clase parcial de Vuelo. Tengo un temporizador que llama a datagrid.Items.Refresh cada 2 segundos para actualizar el reloj.Actualice WPF DataGrid sin perder el foco de celda
La actualización funciona bien, pero ahora estoy agregando atajos de teclado. Navegar por las celdas con las flechas del teclado funciona bien con el temporizador apagado, pero con el temporizador de actualización habilitado, la celda enfocada (en realidad toda la cuadrícula de datos) pierde el foco.
Necesito mantener de alguna manera el enfoque (preferido) o desactivar el temporizador cada vez que se enfoca DataGrid. Ni siquiera puedo hacer que este último trabaje. He intentado:
if (!dataGrid.IsFocused)
dataGrid.Items.Refresh();
y
if (!dataGrid.IsKeyboardFocused)
dataGrid.Items.Refresh();
para el temporizador, pero estas propiedades return false incluso cuando la cuadrícula de datos se concentra.
¿Alguna idea?
simplemente almacene el índice de la fila seleccionada, establezca selectedIndex después de actualizar – Hukam
¿Por qué no invocar PropertyChanged de forma asincrónica en la definición de la entidad vinculada y cambiar la propiedad de invocación del temporizador (o de alguna lógica en la clase de entidad parcial). Entonces solo puedes usar UpdateSource.OnPropertyChanged para su enlace DataGridColumn, que debería (en teoría) evitar que toda la DG se actualice y solo actualice las entidades modificadas (y así resolver su problema de enfoque Y conducir a, de esta manera, un mejor rendimiento). ¿Me estoy perdiendo de algo? – William