在从编辑器获取返回值的时候,如果是引用对象,不要只改变value的成员:
object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
(value as List<int>)[0] = 123; // wrong.
return value;
List<int> result = new List<int>; // correct
result.AddRange( value as List<int> );
result[0] = 123;
return result;
}
而是要返回一个新的对象。后面一种情况将触发PropertyValueChanged事件。
看来PropertyGrid根据简单的引用相等来判断属性是否改变。
object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
(value as List<int>)[0] = 123; // wrong.
return value;
List<int> result = new List<int>; // correct
result.AddRange( value as List<int> );
result[0] = 123;
return result;
}
而是要返回一个新的对象。后面一种情况将触发PropertyValueChanged事件。
看来PropertyGrid根据简单的引用相等来判断属性是否改变。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货