如何获取对 PropertyValueChanged 事件中更改的对象的引用?
How can I get a reference to the object changed in a PropertyValueChanged event?
我可以在 PropertyGrid
上为 PropertyValueChanged
事件添加处理程序。如果用户更改 SelectedObject
的属性,这将正常工作。但是,如果 SelectedObject
具有本身是对象的属性,则用户还可以编辑该对象的属性。我仍然引发了 PropertyValueChanged
事件,这很好,但是我找不到一种方法来获取对他们已更改的对象的引用。
在Watch window中查看PropertyValueChangedEventArgs
参数的ChangedItem 属性,可以看到在[=中有一个Instance
属性 17=] 但我似乎无法从我的代码中访问它。
任何建议表示赞赏。
引发 PropertyValueChanged
事件时,它有一个关联的 PropertyValueChangedEventArgs
。此对象有一个 ChangedItem
成员,其中包含已更改的 GridItem
。因此,如果您想对已更改的项目执行某些操作,您的处理程序可能如下所示:
private void OnPropertyValueChanged(Object sender, PropertyValueChangedEventArgs args) {
Console.WriteLine($"The changed item was {args.ChangedItem}");
}
这似乎可以完成工作:
e.ChangedItem.GetType().GetProperty("Instance").GetValue(e.ChangedItem)
我可以在 PropertyGrid
上为 PropertyValueChanged
事件添加处理程序。如果用户更改 SelectedObject
的属性,这将正常工作。但是,如果 SelectedObject
具有本身是对象的属性,则用户还可以编辑该对象的属性。我仍然引发了 PropertyValueChanged
事件,这很好,但是我找不到一种方法来获取对他们已更改的对象的引用。
在Watch window中查看PropertyValueChangedEventArgs
参数的ChangedItem 属性,可以看到在[=中有一个Instance
属性 17=] 但我似乎无法从我的代码中访问它。
任何建议表示赞赏。
引发 PropertyValueChanged
事件时,它有一个关联的 PropertyValueChangedEventArgs
。此对象有一个 ChangedItem
成员,其中包含已更改的 GridItem
。因此,如果您想对已更改的项目执行某些操作,您的处理程序可能如下所示:
private void OnPropertyValueChanged(Object sender, PropertyValueChangedEventArgs args) {
Console.WriteLine($"The changed item was {args.ChangedItem}");
}
这似乎可以完成工作:
e.ChangedItem.GetType().GetProperty("Instance").GetValue(e.ChangedItem)