繁体   English   中英

为什么在wpf datagrid中编辑数据不会引发绑定属性的“设置”事件?

[英]Why editing the data in a wpf datagrid dosen't raise the “set” event of the binded property?

这是我的代码的非常简化的版本。 我有一个绑定到DataTable的DataGrid:

<DataGrid ItemsSource="{Binding Path=DtTest}" />

在我的DataContext类中,我具有以下属性:

public DataTable DtTest { get; set; }

如果我通过代码修改DataTable DtTest,则将触发相对的“设置”事件。 但是,如果用户在运行时通过datagrid修改数据,则即使dataTable 的数据已正确更新 ,“ set”事件也不会触发!

当“设置”事件被触发时,我需要引发一个自定义事件。 顺便说一句,这个DataGrid行为对我来说听起来很奇怪:例如,如果我使用文本框,则当用户编辑文本时,始终会触发“ set”事件。 这里有什么问题? 如何按照最干净的方法实施此事件?

为什么会这样呢?

为什么更改“在DataTable内部”会触发包含所述DataTable的成员的设置器?

设置员只会被这条线叫

this.DtTest = new DataTable();

使用这条线

this.DtTest.TableName = "Hello World";

它不会触发设置器。

您与TextBox示例有所不同,因为没有任何“内部”值被更改。 它自己修改的成员,没有设置的TextProperty.Value ,而是仅设置了TextProperty

您可以尝试监听DataGrid的拟合事件: DataGrid Events

例如, CellEndEditingRowEndEditing

或收听DataTable的拟合事件: DataTable Events

例如, RowChangedColumnChanged

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM