WPF Datagrid -DataGridTemplateColumn选项卡焦点问题

时间:2009-04-14 02:04:34

标签: wpf datagrid datagridtemplatecolumn

我使用的是Microsoft WPF数据网格。我注意到WPF datagrid DataGridTemplateColumn有一个奇怪的行为。当您在网格中使用templateColumn并且当您从上一列中进行选项卡时,模板列包含一些控件时,焦点不会自动赋予模板列中声明的第一个元素。最初设置在模板列的边框上,当我们选择agin时,焦点将转到第一列。此问题的任何解决方法。当我关闭时,如何将焦点设置为数据网格的模板列中的第一个元素。

4 个答案:

答案 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