如何获取对 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)