[英]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
例如, CellEndEditing
或RowEndEditing
或收听DataTable的拟合事件: DataTable Events
例如, RowChanged
或ColumnChanged
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.