У меня есть служба, которая устанавливает атрибут ReadOnly свойства true/false во время выполнения, поэтому пользователь не сможет изменить значение свойства в свойстваGrid.Отключить выпадающее поле combobox, когда свойство binded отмечено как readonly
Служба полезна, когда свойство редактируется в текстовом редакторе. Однако некоторые из моих редакторов - это combobox. Я хочу, чтобы выпадающее меню было отключено, когда я установил свойство для чтения только для пользователя, что означает, что пользователь сможет видеть выбранный элемент в поле со списком, но когда он нажимает на стрелку рядом с выпадающим списком, чтобы увидеть варианты, ничего не получится. это не работает с текущей реализацией. Я думаю, мне нужно использовать другой атрибут для свойства. Я попытался изменить «EditableAttribute» собственности, но он не работает .... код я использую, чтобы изменить свойство только для чтения:
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);
Есть идеи?
Вы пытались использовать публичное свойство IsReadOnly вместо поля? – Domysee
Это не имеет значения, так как для текстового редактора приведенный выше код действительно работает. – mmm
Вы реализовали это в MVVM, пытались ли связать свойство в VM с атрибутом IsEnabled 'Combobox'. – Gopichandar