Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么要在wpf数据网格dosen';请不要提出这个问题;“设置”;绑定属性的事件?_C#_Wpf_Datatable_Datagrid - Fatal编程技术网

C# 为什么要在wpf数据网格dosen';请不要提出这个问题;“设置”;绑定属性的事件?

C# 为什么要在wpf数据网格dosen';请不要提出这个问题;“设置”;绑定属性的事件?,c#,wpf,datatable,datagrid,C#,Wpf,Datatable,Datagrid,这是我的代码的一个非常简化的版本。我将DataGrid绑定到DataTable: <DataGrid ItemsSource="{Binding Path=DtTest}" /> 如果我通过代码修改DataTable DtTest,则会触发相对的“set”事件。但是,如果用户在运行时通过datagrid修改数据,即使dataTable中的数据已正确更新,也不会触发“set”事件 我需要在触发“set”事件时引发一个自定义事件。顺便说一句,这种DataGrid行为对我来说听起来很奇怪

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

<DataGrid ItemsSource="{Binding Path=DtTest}" />
如果我通过代码修改DataTable DtTest,则会触发相对的“set”事件。但是,如果用户在运行时通过datagrid修改数据,即使dataTable中的数据已正确更新,也不会触发“set”事件


我需要在触发“set”事件时引发一个自定义事件。顺便说一句,这种DataGrid行为对我来说听起来很奇怪:例如,如果我使用文本框,当用户编辑文本时,“set”事件总是被触发。这里有什么问题?如何以最干净的方式实现此事件?

为什么会这样

为什么
数据表
内部的更改会触发包含所述
数据表
的成员的setter

setter只会被这一行调用

this.DtTest = new DataTable();
this.DtTest.TableName = "Hello World";
用这条线

this.DtTest = new DataTable();
this.DtTest.TableName = "Hello World";
它不会触发二传手

您使用
TextBox
的示例有所不同,因为没有更改的“内部”值。它自己被修改的成员,没有将被设置的
TextProperty.Value
,而只有
TextProperty
被设置

您可以尝试侦听DataGrid的一个拟合事件:

例如,
CellEndEditing
RowEndEditing

或收听DataTable的拟合事件:


例如,
RowChanged
ColumnChanged

谢谢!你的回答对我有很大帮助:我过去常常过于看重SETER访问器。很好的机会让我更深入地了解自己!