WPF Datagrid -DataGridTemplateColumn tab focus issue
Asked Answered
I

4

23

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.

Icosahedron answered 14/4, 2009 at 2:4 Comment(1)
Some other answers can be found on this question: #1104664Thanet
B
12

We solved this problem by modifying the style on DataGridCell:

<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
    <Setter Property="IsTabStop" Value="False"/>
Bouldon answered 8/11, 2013 at 15:34 Comment(1)
Works perfectly. Thanks!Superiority
K
7

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);
      }
}
Kipper answered 14/5, 2010 at 15:42 Comment(3)
What is the HODataGridHelper? I tried using this code in a .NET 4 project, but it has no idea what the HODataGridHelper is, and I can't find an applicable GetVisualChild function anywhere else.Loginov
Pete, that was a custom class we created. Sorry I don't access to that piece of code now. It's a variant of framework's GetVisualChild method : msdn.microsoft.com/en-us/library/…Kipper
Thank you so much. I trawled for hours to find this.Iveson
I
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"

Infrasonic answered 27/5, 2010 at 17:9 Comment(2)
Specified link is not working, someone pls. provide updated link.Suzetta
This works: iyalovoi.wordpress.com/2009/08/21/…Infrasonic
I
1

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

Thanks to vincent sibal

Icosahedron answered 14/4, 2009 at 2:31 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.