<data:DataGridTemplateColumn Header="Name">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}">
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
<data:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Name}">
</DataTemplate>
</data:DataGridTemplateColumn.CellEditingTemplate>
</data:DataGridTemplateColumn>
テンプレートの列の例は間違いありません。何が間違っているのでしょうか? ここでは、ユーザーがTABキーを押しながらDataGridをナビゲートするときに、TextBoxのテキストを編集できるようにするためにTabキーを2回(!)押す必要があります。ユーザーが列のフォーカスを取得するとすぐに編集可能にすることができます。入力を開始したばかりであってもどうですか?WPF DataGridTemplateColumn。何か不足していますか?
は、あなたの問題は、各セルが最初にフォーカスを受け取るコンテンツコントロールにそのエディタを置くことに起因if (Grid.CurrentColumn.Header.ToString() == "UserName")
{
if (e.Key != Key.Escape)
{
Grid.BeginEdit();
// Simply send another TAB press
if (Keyboard.FocusedElement is Microsoft.Windows.Controls.DataGridCell)
{
var keyEvt = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, Key.Tab) { RoutedEvent = Keyboard.KeyDownEvent };
InputManager.Current.ProcessInput(keyEvt);
}
}
}
は御馳走を動作しますが、これは本当に醜いハックです...私は、MSが提供する素敵な方法を見つけてほしい:(機能 – David
のFocusManagerメソッドのこの種はうまく機能した内容は、選択し得るために、あなたも持っフォーカス方式を追加することができます。 ます。private void StrikeTextBox_GotFocus(オブジェクト送信者、RoutedEventArgs e)の { VARテキストボックス=(テキストボックス)送信者; Dispatcher.BeginInvoke(新しいアクション(textBox.SelectAll)); } – Neil