我有一个服务,它在运行时将属性的ReadOnly属性设置为true / false,因此用户将无法更改propertyGrid中的属性值。
在文本编辑器中编辑属性时,该服务很有用。 但是,我的一些编辑器是组合框。 我希望在将属性设置为readonly时禁用下拉列表 - 意味着用户将能够在组合框中看到所选项目,但是当他单击组合框旁边的箭头以查看选项时,不会发生任何事情。这不符合当前的实施。我想我需要对属性使用不同的属性。我试图更改属性的“EditableAttribute”但它不起作用.... 我用来更改readonly属性的代码:
PropertyDescriptor descriptor = TypeDescriptor.GetProperties(obj)[property];
ReadOnlyAttribute attribute = (ReadOnlyAttribute)descriptor.Attributes[typeof(ReadOnlyAttribute)];
FieldInfo fieldInfo = attribute.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
fieldInfo.SetValue(attribute, value);
有什么想法吗?
答案 0 :(得分:0)
在标准WPF ComboBox中,IsReadOnly
仅在IsEditable = true
时生效,但不会阻止用户选择值。它只是使可编辑文本框为只读。
要完全阻止控件的选择,您应该使用 IsEnabled = false
。