2009-04-14 2 views
17

Я использую Microsoft WPF datagrid. Я заметил странное поведение с WPF datagrid DataGridTemplateColumn. Когда вы используете шаблонColumn в сетке, а столбец шаблона содержит некоторые элементы управления, когда вы вставляете вкладку из предыдущего столбца, фокус автоматически не присваивается первому элементу, объявленному в столбце шаблона. Foucs инициализируется на границе столбца шаблона, и когда мы вставляем один раз, акцент переходит в первый столбец. Любой обходной путь для этой проблемы. Как я могу настроить фокус, чтобы перейти к первому элементу столбца шаблона файла данных, когда я убираю его.WPF Datagrid -DataGridTemplateColumn tab focus issue

+0

Некоторые другие ответы можно найти на этот вопрос: http://stackoverflow.com/questions/1104164/wpf-datagridtemplatecolumn- am-i-missing-something – Neil

ответ

7

Я избавилась от этой проблемы путем обработки PrepareCellForEdit события сетки. Вот код

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

Что такое HODataGridHelper? Я попытался использовать этот код в проекте .NET 4, но он не знает, что такое HODataGridHelper, и я не могу найти применимую функцию GetVisualChild в другом месте. – Pete

+0

Пит, это был особый класс, который мы создали. Извините, я не имею доступа к этому фрагменту кода. Это вариант метода GetVisualChild для платформы: http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.getvisualchild.aspx – Gopinath

+0

Большое вам спасибо. Я много часов тратил, чтобы найти это. – Echilon

2

Существует решение, использующее статический класс и одно изменение для Xaml для управления, которое вы хотите сфокусировать. «WPF DataGrid: Tabbing from cell to cell does not set focus on control»

+0

Уточняемая ссылка не работает, кто-то pls. предоставить обновленную ссылку. – akjoshi

+1

Работает: http://iyalovoi.wordpress.com/2009/08/21/wpf-datagrid-tabbing-from-cell-to-cell-does-not-set-focus-on-control/ – amaca

5

Мы решили эту проблему, изменив стиль на DataGridCell:

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

Работает отлично. Благодаря! – dontbyteme

Смежные вопросы