WPF Datagrid -DataGridTemplateColumn tab focus issue

两盒软妹~` 提交于 2019-11-27 03:11:20

问题


I am using Microsoft WPF datagrid. I have noticed a strange behavior with WPF datagrid DataGridTemplateColumn. When you use the templateColumn in the grid and the template column contains some controls when you tab from the previous column the focus is not automatically given to the first element declared in the template column. The foucs is initally set on the border of the template column and when we tab of once agin the focus goes to the first column. Any workaround for this issue. How can i set the focus to go the first element in the template column of the datagrid when i tab off.


回答1:


We solved this problem by modifying the style on DataGridCell:

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



回答2:


I got rid of this problem by handling PrepareCellForEdit event of the grid. Here is the code

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);
      }
}



回答3:


There is a solution using a static class and one change to the Xaml for the control you want focused. "WPF DataGrid: Tabbing from cell to cell does not set focus on control"




回答4:


I found out a link in WPF datagrid codeplex discussions http://www.codeplex.com/wpf/Thread/View.aspx?ThreadId=35540

Thanks to vincent sibal



来源:https://stackoverflow.com/questions/746069/wpf-datagrid-datagridtemplatecolumn-tab-focus-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!