C# 如何修复WPF中的删除行

C# 如何修复WPF中的删除行,c#,wpf,datagrid,C#,Wpf,Datagrid,我尝试添加删除行,但当我编辑某行(删除单词或符号)时,该行将被删除。我要删除行。如果该行处于编辑模式,并且如果我按delete键,则该行将被删除 public partial class MainWindow : Window { ObservableCollection<Employee> johnSmith = new ObservableCollection<Employee>();[enter image description here][1]

我尝试添加删除行,但当我编辑某行(删除单词或符号)时,该行将被删除。我要删除行。如果该行处于编辑模式,并且如果我按delete键,则该行将被删除

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

            }
        }
    }
公共部分类主窗口:窗口
{
ObservableCollection johnSmith=新的ObservableCollection();[在此处输入图像描述][1]
公共主窗口()
{
初始化组件();
dataGrid.ItemsSource=johnSmith;
}
公营雇员
{
公共字符串employeeID{get;set;}
公共字符串employeeName{get;set;}
公共字符串employeeAddress{get;set;}
公共字符串employeeCity{get;set;}
公共字符串employeeState{get;set;}
}
private void AddNewEmployeeClicked(对象发送方,路由目标)
{
johnSmith.Add(新员工()
{
employeeID=IDTB.Text,
employeeAddress=地址TB.Text,
employeeCity=CityTB.Text,
employeeName=NameTB.Text,
employeeState=StateTB.Text
});
}
私有void datagrid_loadingrow(对象发送方,DataGridRowEventArgs e)
{
e、 Row.Header=(e.Row.GetIndex()+1.ToString();
}
私有void deletegrid_keydown(对象发送方,KeyEventArgs e)
{
if(e.Key==Key.Delete)
{
if(dataGrid.SelectedItem!=null)
{
约翰史密斯移除(项目);
}
}
}

如果要防止行删除,可以使用
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
    }
}

如果要防止行删除,可以使用
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
    }
}

请您为这个问题添加更多的上下文好吗?您是否正在尝试从数据网格中删除?您是否正在从row对象中删除某些内容-如果是,您正在尝试删除哪些内容以及johnSmith对象包含哪些内容?@RayK我想删除该行,但如果该行处于编辑模式,我想取消删除。现在,当我更改一些文本和press delete然后该行将被删除您是否可以为该问题添加更多的上下文?您是否尝试从数据网格中删除?您是否正在从row对象中删除某些内容-如果是,您尝试删除的内容是什么,以及johnSmith对象包含的内容是什么?@RayK我希望删除该行,但如果该行处于编辑模式,我希望删除取消ed.现在,当我更改一些文本并按delete键时,该行将被删除