WPF DataGridTemplateColumn. Estou esquecendo de algo?
<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>
É um exemplo claro da coluna Template, certo? O que poderia estar errado com aquilo? Então, aqui está a coisa - quando um usuário navega pelo DataGrid pressionando a tecla TAB, ele precisa pressionar a tecla TAB duas vezes (!) Para poder editar o texto no TextBox. Como eu poderia torná-lo editável assim que o usuário obtém o foco da coluna, quer dizer, mesmo que ele comece a digitar?
Está bem. Eu encontrei um caminho - em Grid.KeyUp () eu coloquei o código abaixo:
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);
}
}
}