WPF Datagrid - проблема с фокусом на вкладке DataGridTemplateColumn

Я использую сетку данных Microsoft WPF. Я заметил странное поведение с DataGridTemplateColumn в WPF. Когда вы используете templateColumn в сетке и столбец шаблона содержит некоторые элементы управления, когда вы переходите из предыдущего столбца, фокус автоматически не передается первому элементу, объявленному в столбце шаблона. Изначально foucs устанавливается на границе столбца шаблона, и когда мы снова нажимаем табуляцию, фокус переходит на первый столбец. Любой способ решения этой проблемы. Как я могу установить фокус, чтобы перейти к первому элементу в столбце шаблона таблицы данных, когда я отключаюсь.


person Community    schedule 14.04.2009    source источник
comment
На этот вопрос можно найти и другие ответы: stackoverflow.com/questions/1104164/   -  person Neil    schedule 18.11.2011


Ответы (4)


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

<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
    <Setter Property="IsTabStop" Value="False"/>
person patrickbadley    schedule 08.11.2013
comment
Прекрасно работает. Спасибо! - person dontbyteme; 18.12.2017

Я избавился от этой проблемы, обработав событие 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);
      }
}
person Gopinath    schedule 14.05.2010
comment
Что такое HODataGridHelper? Я пробовал использовать этот код в проекте .NET 4, но он не знает, что такое HODataGridHelper, и я не могу найти подходящую функцию GetVisualChild где-либо еще. - person Pete; 10.08.2011
comment
Пит, это был специальный класс, который мы создали. Извините, у меня сейчас нет доступа к этому фрагменту кода. Это вариант метода GetVisualChild фреймворка: msdn.microsoft. ru / en-us / library / - person Gopinath; 14.08.2011
comment
Большое спасибо. Я тратил часы, чтобы найти это. - person Echilon; 07.03.2012

Существует решение, использующее статический класс и одно изменение Xaml для элемента управления, на который вы хотите сфокусироваться. "WPF DataGrid: при переходе от ячейки к ячейке фокус не устанавливается "

person amaca    schedule 27.05.2010
comment
Указанная ссылка не работает, пожалуйста. предоставить обновленную ссылку. - person akjoshi; 20.10.2011
comment
Это работает: iyalovoi.wordpress.com/2009/08/21/ - person amaca; 26.10.2011

Я нашел ссылку в обсуждениях WPF datagrid codeplex http://www.codeplex.com/wpf/Thread/View.aspx?ThreadId=35540

Спасибо винсенту сибалу

person Community    schedule 14.04.2009