我使用的是Microsoft WPF数据网格。我注意到WPF datagrid DataGridTemplateColumn有一个奇怪的行为。当您在网格中使用templateColumn并且当您从上一列中进行选项卡时,模板列包含一些控件时,焦点不会自动赋予模板列中声明的第一个元素。最初设置在模板列的边框上,当我们选择agin时,焦点将转到第一列。此问题的任何解决方法。当我关闭时,如何将焦点设置为数据网格的模板列中的第一个元素。
答案 0 :(得分: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);
}
}
答案 1 :(得分:7)
我们通过修改DataGridCell上的样式解决了这个问题:
<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="IsTabStop" Value="False"/>
答案 2 :(得分:2)
有一个解决方案,使用静态类,并对要重点关注的控件进行一次Xaml更改。 “WPF DataGrid: Tabbing from cell to cell does not set focus on control”
答案 3 :(得分:1)
我在WPF datagrid codeplex讨论中找到了一个链接 http://www.codeplex.com/wpf/Thread/View.aspx?ThreadId=35540
感谢vincent sibal