У меня есть propertygrid
, в котором я показываю свойства выбранного объекта на WPF
холсте. Я устанавливаю ReadOnlyAttribute
для свойства во время выполнения на основе значения другого свойства.
Когда у меня есть несколько экземпляров одного и того же объекта, установка атрибута для свойства одного объекта изменяет значение в другом объекте также.
Любая помощь?
Код, используемый для изменения значения атрибута во время выполнения:
PropertyDescriptor descriptor = TypeDescriptor.GetProperties(object1.GetType())["propertyName"];
var readOnlyAttr = descriptor?.Attributes.OfType<ReadOnlyAttribute>().First();
if (readOnlyAttr != null)
{
FieldInfo isReadOnly = readOnlyAttr.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
isReadOnly.SetValue(readOnlyAttr, isReadonly);
isSuccess = true;
}