WPF Datagrid -DataGridTemplateColumn选项卡焦点问题

发布于 2024-07-17 04:59:36 字数 234 浏览 5 评论 0 原文

我正在使用 Microsoft WPF 数据网格。 我注意到 WPF 数据网格 DataGridTemplateColumn 的奇怪行为。 当您在网格中使用 templateColumn 并且模板列包含一些控件时,当您从上一列进行 Tab 切换时,焦点不会自动分配给模板列中声明的第一个元素。 焦点最初设置在模板列的边框上,当我们再次单击时,焦点将转到第一列。 此问题的任何解决方法。 当我关闭时,如何将焦点设置为数据网格模板列中的第一个元素。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

哥,最终变帅啦 2024-07-24 04:59:36

我们通过修改DataGridCell上的样式解决了这个问题:

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

We solved this problem by modifying the style on DataGridCell:

<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
    <Setter Property="IsTabStop" Value="False"/>
月竹挽风 2024-07-24 04:59:36

我通过处理网格的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);
      }
}

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);
      }
}
≈。彩虹 2024-07-24 04:59:36

有一种解决方案使用静态类,并对您想要关注的控件的 Xaml 进行一次更改。 “WPF DataGrid:从一个单元格切换到另一个单元格不会将焦点设置在控件上"

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"

无妨# 2024-07-24 04:59:36

我在 WPF datagrid codeplex 讨论中找到了一个链接
http://www.codeplex.com/wpf/Thread/View。 aspx?ThreadId=35540

感谢文森特·西巴尔

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

Thanks to vincent sibal

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文