Microsoft WPF DataGridを使用しています。私はWPF DataGrid DataGridTemplateColumnで奇妙な動作に気付きました。グリッドでtemplateColumnを使用し、前の列からタブを移動したときにテンプレート列にいくつかのコントロールが含まれていると、テンプレート列に宣言されている最初の要素にフォーカスが自動的に与えられません。テンプレートは最初にテンプレート列の境界に設定され、一度aginするとフォーカスは最初の列に移動します。この問題の回避策。私はタブをオフにするときに、データグリッドのテンプレート列の最初の要素に移動するようにフォーカスを設定できます。WPF Datagrid - DataGridTemplateColumnタブフォーカスの問題
答えて
私は http://www.codeplex.com/wpf/Thread/View.aspx?ThreadId=35540
WPFのデータグリッドのCodePlexの議論にリンクを見つけた私は、グリッドのPrepareCellForEditイベントを処理することにより、この問題を処分したヴィンセントsibal
に感謝します。コードは
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);
}
}
HODataGridHelperとは何ですか?私は.NET 4プロジェクトでこのコードを使用しようとしましたが、HODataGridHelperが何であるか分かりません。どこでもGetVisualChild関数を見つけることができません。 – Pete
ピート、私たちが作成したカスタムクラスでした。申し訳ありませんが、私は今、そのコードにアクセスしません。フレームワークのGetVisualChildメソッドの変形です:http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.getvisualchild.aspx – Gopinath
ありがとうございました。私はこれを見つけるために何時間も徘徊した。 – Echilon
静的なクラスを使用したソリューションと、Xamlに焦点を当てたいコントロールを1つ変更したソリューションがあります。 「WPF DataGrid: Tabbing from cell to cell does not set focus on control」
我々はDataGridCell上のスタイルを変更することによってこの問題を解決:
<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="IsTabStop" Value="False"/>
完全に動作します。ありがとう! – dontbyteme
をいくつかの他の答えがこの質問で見つけることができます:http://stackoverflow.com/questions/1104164/wpf-datagridtemplatecolumn- am-i-missing-something – Neil