2009-04-14 18 views
17

Estoy usando la cuadrícula de datos WPF de Microsoft. He notado un comportamiento extraño con la cuadrícula de datos de WPF DataGridTemplateColumn. Cuando utiliza la plantillaColumna en la cuadrícula y la columna de la plantilla contiene algunos controles al tabular de la columna anterior, el foco no se asigna automáticamente al primer elemento declarado en la columna de la plantilla. Las foucs se establecen inicialmente en el borde de la columna de la plantilla y cuando tabulamos una vez el foco se dirige a la primera columna. Cualquier solución para este problema. ¿Cómo puedo establecer el foco para ir al primer elemento en la columna de la plantilla de la cuadrícula de datos cuando desactivo?WPF Datagrid -DataGridTemplateColumn tema de foco de tabulación

+0

Algunas otras respuestas se pueden encontrar en esta pregunta: http://stackoverflow.com/questions/1104164/wpf-datagridtemplatecolumn- am-i-missing-something – Neil

Respuesta

7

Me deshice de este problema mediante la manipulación PrepareCellForEdit caso de la red. Aquí está el código

void HODataGrid_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e) 
{ 
     UIElement inputElement; 
     /// 
     /// Texbox is the first control in my template column 
     /// 
     inputElement = HODataGridHelper.GetVisualChild<TextBox>(e.EditingElement); 
     if (inputElement != null) 
     { 
      Keyboard.Focus(inputElement); 
     } 
} 
+0

¿Qué es HODataGridHelper? Intenté usar este código en un proyecto .NET 4, pero no tengo idea de qué es HODataGridHelper, y no puedo encontrar una función GetVisualChild aplicable en ningún otro lado. – Pete

+0

Pete, esa era una clase personalizada que creamos. Lo siento, no tengo acceso a ese pedazo de código ahora. Es una variante del método GetVisualChild de framework: http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.getvisualchild.aspx – Gopinath

+0

Muchas gracias. Arrastré durante horas para encontrar esto. – Echilon

2

Hay una solución que utiliza una clase estática y un cambio en el Xaml para el control que desea enfocar. "WPF DataGrid: Tabbing from cell to cell does not set focus on control"

+0

El enlace especificado no funciona, alguien por favor. proporcionar un enlace actualizado. – akjoshi

+1

Esto funciona: http://iyalovoi.wordpress.com/2009/08/21/wpf-datagrid-tabbing-from-cell-to-cell-does-not-set-focus-on-control/ – amaca

5

Hemos resuelto este problema mediante la modificación del estilo de DataGridCell:

<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}"> 
    <Setter Property="IsTabStop" Value="False"/> 
+0

Funciona perfectamente. ¡Gracias! – dontbyteme