/ / So fügen Sie ein neues Element zu XAML Datagrid hinzu, indem Sie die Tastatur-Registerkarte drücken, wenn das letzte Element ausgewählt ist? - c #, wpf, xaml, Datagrid

So fügen Sie ein neues Element zu XAML Datagrid hinzu, indem Sie die Tastatur-Registerkarte drücken, wenn das letzte Element ausgewählt ist? - c #, wpf, xaml, Datagrid

Ich habe ein ziemlich einfaches Datagrid XAML, das an eine CollectionViewSource gebunden ist.

<DataGrid ItemsSource="{Binding Source={StaticResource EditingItemsCollectionViewSource}}"/>

Und die Collection View Source ist an eine beobachtbare Sammlung von sehr einfachen Objekten mit 3 numerischen Werten gebunden. C # offensichtlich.

Ich möchte in der Lage sein, eine neue Zeile (fügen Sie ein neues Element) am Ende dieses Datagrids durch Drücken von Tab auf der Tastatur, wenn ich in der letzten Zelle der letzten Zeile bin.

Ist das möglich?

Antworten:

0 für die Antwort № 1

Eine mögliche Lösung besteht darin, die Eigenschaft programmgesteuert festzulegen:

dataGrid.AllowUserToAddRows = true;

um die Funktion "Zeile hinzufügen" zu implementieren(vorausgesetzt, es wurde ursprünglich auf "false" gesetzt, daher war die neue Zeile unsichtbar). Gemäß Ihrer Taskdefinition könnte dies durch Drücken der Tabulatortaste (mit jeder zusätzlichen Bedingung, die Sie hinzufügen können) ausgelöst werden:

private void dataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
try
{
if (e.Key == Key.Tab)
{
e.Handled = true;
// your code
}
}
catch{}
}

Sie können auch einige Standardwerte für neu erstellte Zeilenelemente festlegen, indem Sie die Prozedur für die Ereignisbehandlung hinzufügen:

dataGrid.InitializingNewItem += new InitializingNewItemEventHandler(dataGrid_InitNewItem);
private void dataGrid_InitNewItem(object sender, InitializingNewItemEventArgs e)
{
// your code
}

Andere Beispielimplementierungen zum Hinzufügen von Zeilen zu WPF DataGrid könnte hier gefunden werden: Wpf DataGrid Neue Zeile hinzufügen

Sie können das Element auch zu dem zugrunde liegenden Element hinzufügen ObservableCollection, so wird es automatisch in der erscheinen DataGrid.

Hoffe, das wird helfen. Freundliche Grüße,