2009-04-14 24 views
17

Microsoft WPF DataGridを使用しています。私はWPF DataGrid DataGridTemplateColumnで奇妙な動作に気付きました。グリッドでtemplateColumnを使用し、前の列からタブを移動したときにテンプレート列にいくつかのコントロールが含まれていると、テンプレート列に宣言されている最初の要素にフォーカスが自動的に与えられません。テンプレートは最初にテンプレート列の境界に設定され、一度aginするとフォーカスは最初の列に移動します。この問題の回避策。私はタブをオフにするときに、データグリッドのテンプレート列の最初の要素に移動するようにフォーカスを設定できます。WPF Datagrid - DataGridTemplateColumnタブフォーカスの問題

+0

をいくつかの他の答えがこの質問で見つけることができます:http://stackoverflow.com/questions/1104164/wpf-datagridtemplatecolumn- am-i-missing-something – Neil

答えて

7

に感謝します。コードは

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とは何ですか?私は.NET 4プロジェクトでこのコードを使用しようとしましたが、HODataGridHelperが何であるか分かりません。どこでもGetVisualChild関数を見つけることができません。 – Pete

+0

ピート、私たちが作成したカスタムクラスでした。申し訳ありませんが、私は今、そのコードにアクセスしません。フレームワークのGetVisualChildメソッドの変形です:http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.getvisualchild.aspx – Gopinath

+0

ありがとうございました。私はこれを見つけるために何時間も徘徊した。 – Echilon

2

静的なクラスを使用したソリューションと、Xamlに焦点を当てたいコントロールを1つ変更したソリューションがあります。 「WPF DataGrid: Tabbing from cell to cell does not set focus on control

+0

指定されたリンクが動作していない、誰かがpls。更新されたリンクを提供する – akjoshi

+1

これは動作します:http://iyalovoi.wordpress.com/2009/08/21/wpf-datagrid-tabbing-from-cell-to-cell-does-not-set-focus-on-control/ – amaca

5

我々はDataGridCell上のスタイルを変更することによってこの問題を解決:

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

完全に動作します。ありがとう! – dontbyteme