我想创建undo/redo command
可以为某些属性设置新/旧值的。我propertygrid
用来操纵属性值。我尝试使用PropertyValueChanged event
.
我的尝试:
private void pg_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{
var item = propertyGrid.SelectedObject;
var propertyName = e.ChangedItem.PropertyDescriptor.Name;
PropertyInfo pi = item.GetType().GetProperty(propertyName);
var oldValue = e.OldValue;
var newValue = propertyInfo.GetValue(item, null);
//create command here
}
如果属性的父级是propertyGrid.SelectedObject
. 但如果我有课:
Class A {
public Size Size {get;set;}
}
它有时不起作用。示例:propertyGrid.SelectedObject
is Class A
, propertyName
is Width
, Width
is not Class A
property, it is Size
property, 所以我得到了异常。
我该如何解决这个问题?如何创造undo/redo command
这种情况?