WPF DataGridTemplateColumn. Vermisse ich etwas?

     <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>              

Es ist ein klares Beispiel für eine Template-Spalte, oder? Was könnte daran falsch sein? Wenn ein Benutzer mit gedrückter TAB-Taste durch DataGrid navigiert, muss er die TAB-Taste zweimal (!) Drücken, um Text in TextBox bearbeiten zu können. Wie kann ich es bearbeitbar machen, sobald der Benutzer den Spaltenfokus erhält? Ich meine, auch wenn er gerade mit der Eingabe beginnt?

OK. Ich habe einen Weg gefunden - in Grid.KeyUp () habe ich den folgenden Code eingefügt:

 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);
                }
            }
        } 

Antworten auf die Frage(4)

Ihre Antwort auf die Frage