Вы можете думать немного по-другому в Blazor.
Вместо того, чтобы использовать «bind» и предотвращать нажатие клавиш, вы можете установить «value» и обработать событие «oninput», например:
https: // blazorfiddle. com / s / azdn892n
@page "/"
Start typing something...
@functions {
private int _petitionCharStep = 0;
private string _petition = "This is a dummy text";
public string PetitionInput { get; set; } = string.Empty;
void PetitionHandleKeyDown(UIChangeEventArgs arg) {
PetitionInput = _petition.Substring(0,++_petitionCharStep);
Console.WriteLine(PetitionInput);
}
}
Я не могу представить, почему вы хотели бы сделать это, и там Есть много дополнительных вещей, которые вам нужно сделать, чтобы закрыть пробелы, клавиши со стрелками, вкладки и т.д ...
RemovedItems
объекты отражают объекты, удаленные из выбора, а не из сетки.
Обработайте PreviewKeyDown
событие и использование SelectedItems
свойство для удаления выбранных строк там:
private void PreviewKeyDownHandler(object sender, KeyEventArgs e) {
var grid = (DataGrid)sender;
if ( Key.Delete == e.Key ) {
foreach (var row in grid.SelectedItems) {
... // perform linq stuff to delete here
}
}
}
С чем Вы связываете свой DataGrid? Идеально, необходимо реагировать на события CollectionChanged на наборе, с которым Вы связываете. Тем путем Ваша логика (удаление удаленных объектов) будет разделена от Вашего UI.
Можно создать Заметный набор, содержащий объекты, и связать его с ItemsSource просто с этой целью, если исходный набор не имеет необходимых событий.
Это не могло бы удовлетворить Вашей определенной установке, но это - то, как я обычно делаю это.
Вы хотите обработать событие KeyUp или KeyDown и проверить, что нажатая клавиша для Удаляет.
private void OnKeyDown(object sender, KeyEventArgs e) {
if ( Key.Delete == e.Key ) {
// Delete pressed
}
}