2016-03-24 4 views
0

У меня есть служба, которая устанавливает атрибут 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); 

Есть идеи?

+0

Вы пытались использовать публичное свойство IsReadOnly вместо поля? – Domysee

+0

Это не имеет значения, так как для текстового редактора приведенный выше код действительно работает. – mmm

+0

Вы реализовали это в MVVM, пытались ли связать свойство в VM с атрибутом IsEnabled 'Combobox'. – Gopichandar

ответ

0

В стандартном WPF ComboBox, IsReadOnly действует только тогда, когда IsEditable = true, но не мешает пользователю выбирать значения. он просто редактирует текстовое поле только для чтения.

Чтобы полностью предотвратить контроль с помощью выбора, вы должны использовать IsEnabled = false.

+0

Есть ли атрибут свойства binnded, который я могу изменить, поэтому combobox будет отключен, не связывая свойство combobox isEnabled? – mmm

+0

@mmm Я не могу найти такой атрибут. Позвольте мне сделать быстрый поиск по нему. – Gopichandar

+0

спасибо. Я тоже пытался поискать, но пока ничего не нашел. – mmm

Смежные вопросы