Я использую Microsoft WPF datagrid. Я заметил странное поведение с WPF datagrid DataGridTemplateColumn. Когда вы используете шаблонColumn в сетке, а столбец шаблона содержит некоторые элементы управления, когда вы вставляете вкладку из предыдущего столбца, фокус автоматически не присваивается первому элементу, объявленному в столбце шаблона. Foucs инициализируется на границе столбца шаблона, и когда мы вставляем один раз, акцент переходит в первый столбец. Любой обходной путь для этой проблемы. Как я могу настроить фокус, чтобы перейти к первому элементу столбца шаблона файла данных, когда я убираю его.WPF Datagrid -DataGridTemplateColumn tab focus issue
ответ
я обнаружил ссылку в WPF DataGrid Codeplex обсуждения http://www.codeplex.com/wpf/Thread/View.aspx?ThreadId=35540
Благодаря винсентскому Сибалу
Я избавилась от этой проблемы путем обработки 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);
}
}
Что такое HODataGridHelper? Я попытался использовать этот код в проекте .NET 4, но он не знает, что такое HODataGridHelper, и я не могу найти применимую функцию GetVisualChild в другом месте. – Pete
Пит, это был особый класс, который мы создали. Извините, я не имею доступа к этому фрагменту кода. Это вариант метода GetVisualChild для платформы: http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.getvisualchild.aspx – Gopinath
Большое вам спасибо. Я много часов тратил, чтобы найти это. – Echilon
Существует решение, использующее статический класс и одно изменение для Xaml для управления, которое вы хотите сфокусировать. «WPF DataGrid: Tabbing from cell to cell does not set focus on control»
Мы решили эту проблему, изменив стиль на DataGridCell:
<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="IsTabStop" Value="False"/>
Работает отлично. Благодаря! – dontbyteme
Некоторые другие ответы можно найти на этот вопрос: http://stackoverflow.com/questions/1104164/wpf-datagridtemplatecolumn- am-i-missing-something – Neil