<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 키를 두 번 눌러야합니다 (!). 사용자가 열 포커스를 얻 자마자 편집 가능하게 만들 수 있습니까? 입력을 시작한 후에도 가능합니까?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);
}
}
}
가 치료를 작동하지만이 정말 못생긴 해킹 : 더 정보에 대한
, 내 블로그를 봐 기능 – DavidFocusManager의 방법의이 종류는 잘 작동 내용이 선택 얻으려면, 당신은 또한 가지고 초점 방법을 추가 할 수 있습니다. 개인 무효 StrikeTextBox_GotFocus (개체를 보낸 사람, RoutedEventArgs e)에 { var에 텍스트 상자 = (텍스트 상자) 보낸 사람을 ; Dispatcher.BeginInvoke (새 작업 (textBox.SelectAll)); } – Neil