Что “потребовано клавиша Delete” событие для WPF Datagrid?

Вы можете думать немного по-другому в 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); } }

Sample Typing F repeatedly

Я не могу представить, почему вы хотели бы сделать это, и там Есть много дополнительных вещей, которые вам нужно сделать, чтобы закрыть пробелы, клавиши со стрелками, вкладки и т.д ...

35
задан Edward Tanguay 24 March 2009 в 14:12
поделиться

3 ответа

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
        }
    }
}
30
ответ дан Inferis 27 November 2019 в 07:04
поделиться

С чем Вы связываете свой DataGrid? Идеально, необходимо реагировать на события CollectionChanged на наборе, с которым Вы связываете. Тем путем Ваша логика (удаление удаленных объектов) будет разделена от Вашего UI.

Можно создать Заметный набор, содержащий объекты, и связать его с ItemsSource просто с этой целью, если исходный набор не имеет необходимых событий.

Это не могло бы удовлетворить Вашей определенной установке, но это - то, как я обычно делаю это.

17
ответ дан Denis Troller 27 November 2019 в 07:04
поделиться

Вы хотите обработать событие KeyUp или KeyDown и проверить, что нажатая клавиша для Удаляет.

private void OnKeyDown(object sender, KeyEventArgs e) {
  if ( Key.Delete == e.Key ) {
    // Delete pressed
  }
}
-1
ответ дан JaredPar 27 November 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: