Как исправить удаление строки в WPF - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь добавить строку удаления, но когда я редактирую строку (удаляю слово или символ), строка удаляется. я хочу удалить строку. если строка находится в режиме редактирования, и если я нажму кнопку удаления, строка будет удалена.

public partial class MainWindow : Window
{
    ObservableCollection<Employee> johnSmith = new ObservableCollection<Employee>();[enter image description here][1]
    public MainWindow()
    {
        InitializeComponent();
        dataGrid.ItemsSource = johnSmith;
    }
    public class Employee
    {
        public string employeeID { get; set; }
        public string employeeName { get; set; }
        public string employeeAddress { get; set; }
        public string employeeCity { get; set; }
        public string employeeState { get; set; }
    }

    private void AddNewEmployeeClicked(object sender, RoutedEventArgs e)
    {

        johnSmith.Add(new Employee()
        {
            employeeID = IDTB.Text,
            employeeAddress = AdressTB.Text,
            employeeCity = CityTB.Text,
            employeeName = NameTB.Text,
            employeeState = StateTB.Text
        });

    }
    private void datagrid_loadingrow(object sender, DataGridRowEventArgs e)
    {


        e.Row.Header = (e.Row.GetIndex() + 1).ToString();
    }
    private void deletegrid_keydown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Delete)
        {
            if (dataGrid.SelectedItem != null)
            {

                     johnSmith.Remove(item);

            }
        }
    }

1 Ответ

0 голосов
/ 08 мая 2020

Если вы хотите предотвратить удаление строки, вы можете использовать CanUserDeleteRows="False".

Если вы хотите выполнить некоторую настраиваемую обработку, связанную с вводом с клавиатуры, вы можете использовать событие PreviewKeyDown и подписаться на свой метод обработки.

PreviewKeyDown="DataGrid_PreviewKeyDown"

private void DataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Delete || e.Key == Key.Back)
    {
        e.Handled = true;
        //put some additional handling if you need
    }
}
...