2009-04-14 11 views
17

Tôi đang sử dụng DataGrid Microsoft WPF. Tôi đã nhận thấy một hành vi lạ với WPF DataGridTemplateColumn datagrid. Khi bạn sử dụng mẫuColumn trong lưới và cột mẫu chứa một số điều khiển khi bạn tab từ cột trước, tiêu điểm không tự động được cung cấp cho phần tử đầu tiên được khai báo trong cột mẫu. Các foucs được bắt đầu thiết lập trên biên giới của cột mẫu và khi chúng tôi tab của một lần agin trọng tâm đi đến cột đầu tiên. Bất kỳ giải pháp nào cho vấn đề này. Làm thế nào tôi có thể thiết lập trọng tâm để đi các yếu tố đầu tiên trong cột mẫu của datagrid khi tôi tab tắt.WPF Datagrid -DataGridTemplateCấu hình tiêu điểm tab cột

+0

Một số câu trả lời khác có thể được tìm thấy trên câu hỏi này: http://stackoverflow.com/questions/1104164/wpf-datagridtemplatecolumn- am-i-missing-something – Neil

Trả lời

7

tôi đã thoát khỏi vấn đề này bằng cách xử lý PrepareCellForEdit sự kiện của lưới điện. Đây là mã số

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

HODataGridHelper là gì? Tôi đã thử sử dụng mã này trong một dự án .NET 4, nhưng nó không có ý tưởng những gì HODataGridHelper là, và tôi không thể tìm thấy một chức năng GetVisualChild áp dụng bất cứ nơi nào khác. – Pete

+0

Pete, đó là một lớp học tùy chỉnh mà chúng tôi tạo ra. Rất tiếc, tôi không thể truy cập vào đoạn mã đó ngay bây giờ. Đó là một biến thể của phương pháp GetVisualChild của khung công tác: http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.getvisualchild.aspx – Gopinath

+0

Cảm ơn bạn rất nhiều. Tôi đã rình rập hàng giờ để tìm ra điều này. – Echilon

2

Có một giải pháp sử dụng lớp tĩnh và một thay đổi cho Xaml cho điều khiển bạn muốn tập trung. "WPF DataGrid: Tabbing from cell to cell does not set focus on control"

+0

Liên kết được chỉ định không hoạt động, ai đó xin. cung cấp liên kết được cập nhật. – akjoshi

+1

Công trình này hoạt động: http://iyalovoi.wordpress.com/2009/08/21/wpf-datagrid-tabbing-from-cell-to-cell-does-not-set-focus-on-control/ – amaca

5

Chúng tôi giải quyết vấn đề này bằng cách thay đổi phong cách trên DataGridCell:

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

Hoạt động hoàn hảo. Cảm ơn! – dontbyteme