当绑定属性标记为只读时,禁用组合框下拉列表

时间:2016-03-24 09:25:15

标签: c# wpf combobox propertygrid readonly-attribute

我有一个服务,它在运行时将属性的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);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在标准WPF ComboBox中,IsReadOnly仅在IsEditable = true时生效,但不会阻止用户选择值。它只是使可编辑文本框为只读。

要完全阻止控件的选择,您应该使用 IsEnabled = false