C# 单元格编辑后无法刷新WPF DataGrid

C# 单元格编辑后无法刷新WPF DataGrid,c#,wpf,data-binding,C#,Wpf,Data Binding,关于datagrid刷新问题,我搜索了好几次。但我对此一无所知。我的问题如下。基本上它可以工作。 但若用户对列进行排序,然后编辑单元格,则datagrid无法绑定。VS将列出错误{Once AddNew或EditItem不允许“排序”。} 但允许用户对datagrid列进行排序对用户来说是很友好的。请帮我解决这个问题。谢谢 private void DataGrid1_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)

关于datagrid刷新问题,我搜索了好几次。但我对此一无所知。我的问题如下。基本上它可以工作。 但若用户对列进行排序,然后编辑单元格,则datagrid无法绑定。VS将列出错误{Once AddNew或EditItem不允许“排序”。}

但允许用户对datagrid列进行排序对用户来说是很友好的。请帮我解决这个问题。谢谢

private void DataGrid1_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {

           string sql="update table1 set field1='"+cell_value+''
            BindGR();

        }


   private void BindGR()

    {
        //Bind DataGrid
        if (dt != null)
        {
            DataGrid1.ItemsSource = dt.DefaultView;

        }

    }
View.xaml

View.xaml


RowEditEnding事件上的项目源更新。使用RowEditEnding事件而不是CellEndEditing,并在列绑定上使用UpdateSourceTrigger=LostFocus

<DataGridTextColumn Binding="{Binding bindedProperty,StringFormat=n0 , Mode=TwoWay , UpdateSourceTrigger=LostFocus}"></DataGridTextColumn>

RowEditEnding事件上的项目源更新。使用RowEditEnding事件而不是CellEndEditing,并在列绑定上使用UpdateSourceTrigger=LostFocus

<DataGridTextColumn Binding="{Binding bindedProperty,StringFormat=n0 , Mode=TwoWay , UpdateSourceTrigger=LostFocus}"></DataGridTextColumn>

请分享更多的代码,比如列表的源代码,它是如何被排序的,等等。谢谢。我的列表是从MS SQL中执行的F_作业中选择id、作业名称、作业类型、作业状态。在我修改SQL之后,一切都没有改变。所以我认为DataGrid渲染问题应该是错误的。当我结束单元格编辑时,DataGrid开始渲染。当时,我无法将数据绑定到它。datagrid有一个排序事件。处理该事件并尝试更新源中的数据。您能指导我如何处理该事件吗?谢谢,我现在就发布代码。如果有任何问题,请检查并还原。请共享更多代码,如列表的源代码、排序方式以及所有内容。谢谢。我的列表是从MS SQL中执行的F_作业中选择id、作业名称、作业类型、作业状态。在我修改SQL之后,一切都没有改变。所以我认为DataGrid渲染问题应该是错误的。当我结束单元格编辑时,DataGrid开始渲染。当时,我无法将数据绑定到它。datagrid有一个排序事件。处理该事件并尝试更新源中的数据。您能指导我如何处理该事件吗?谢谢,我现在就发布代码。如果有任何问题,请检查并回复。哇,非常感谢您的代码。我昨天测试了它们。虽然它们不起作用,但你给了我一些新的想法。调试成功后,我将与您共享。另一方面,我想知道为什么会出现这个问题。是的,它们可能不起作用,因为我无法测试它,而且它对我来说不是完全实现的版本。所以,在排序时更新列表是最基本的想法。试试看,让我知道!哇,非常感谢你的代码。我昨天测试了它们。虽然它们不起作用,但你给了我一些新的想法。调试成功后,我将与您共享。另一方面,我想知道为什么会出现这个问题。是的,它们可能不起作用,因为我无法测试它,而且它对我来说不是完全实现的版本。所以,在排序时更新列表是最基本的想法。试试看,让我知道!
private void DataGrid_OnSorting(object sender, DataGridSortingEventArgs e)
{
    var sortedGrid = sender as DataGrid;
    foreach (var item in sortedGrid.Items)
    {
        DataGridItems.Add(item);
    }
}
<DataGridTextColumn Binding="{Binding bindedProperty,StringFormat=n0 , Mode=TwoWay , UpdateSourceTrigger=LostFocus}"></DataGridTextColumn>