WPF DataGrid CellEditEnding - 数据集不更新直到行失去焦点

swift

1个回答

写回答

gyyy飏

2025-08-18 23:45

+ 关注

XML
XML

使用WPF DataGrid进行数据编辑是一种常见的需求,但有时候我们会遇到一个问题:当我们编辑了一个单元格并按下回车键,数据集并没有立即更新。相反,它只有在行失去焦点之后才会更新。这可能会导致一些困扰,特别是当我们希望立即获取更新后的数据时。

要解决这个问题,我们可以使用WPF DataGrid的CellEditEnding事件。这个事件在单元格编辑结束时触发,我们可以在事件处理程序中执行一些操作来更新数据集。让我们来看一个简单的示例代码来说明这个问题。

首先,我们需要在XAML中定义一个DataGrid,并绑定一个数据集。在这个示例中,我们使用一个简单的Person类作为数据集。

XML

<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" CellEditEnding="dataGrid_CellEditEnding">

<DataGrid.Columns>

<DataGridTextColumn Header="姓名" Binding="{Binding Name}" />

<DataGridTextColumn Header="年龄" Binding="{Binding Age}" />

<DataGridTextColumn Header="性别" Binding="{Binding Gender}" />

</DataGrid.Columns>

</DataGrid>

然后,在代码中,我们需要在CellEditEnding事件处理程序中更新数据集。我们可以通过访问DataGrid的SelectedItem属性来获取正在编辑的行,并更新对应的数据对象。

csharp

private void dataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)

{

if (e.EditAction == DataGridEditAction.Commit)

{

var editedItem = e.Row.Item as Person;

if (editedItem != null)

{

// 更新数据集

// editedItem.Name = (e.EditingElement as TextBox).Text;

// editedItem.Age = ...

// editedItem.Gender = ...

}

}

}

现在,当我们编辑一个单元格并按下回车键时,数据集将立即更新。这样,我们就可以立即获取到更新后的数据。

解决WPF DataGrid CellEditEnding数据集不更新问题

在上面的示例中,我们通过在CellEditEnding事件处理程序中更新数据集来解决了数据集不更新的问题。通过访问DataGrid的SelectedItem属性,我们可以获取正在编辑的行,并更新对应的数据对象。

这种解决方案非常简单且易于实现,可以帮助我们在编辑DataGrid时立即获取到更新后的数据。无论是对于简单的数据集还是复杂的数据集,都可以使用这种方法来解决数据集不更新的问题。这对于需要实时更新数据的应用程序非常有用。

通过使用WPF DataGrid的CellEditEnding事件,我们可以解决数据集不更新直到行失去焦点的问题。通过在事件处理程序中更新数据集,我们可以立即获取到更新后的数据。这种解决方案在各种类型的应用程序中都适用,并且非常易于实现。

希望本文对你理解和解决WPF DataGrid CellEditEnding数据集不更新问题有所帮助。如果你有任何问题或疑问,请随时留言。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号