C# 为什么要在wpf数据网格dosen';请不要提出这个问题;“设置”;绑定属性的事件?
这是我的代码的一个非常简化的版本。我将DataGrid绑定到DataTable: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 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访问器。很好的机会让我更深入地了解自己!