我有一個服務,它在運行時將屬性的ReadOnly屬性設置爲true/false,因此用戶將無法更改propertyGrid中的屬性值。綁定屬性被標記爲只讀時禁用組合框下拉列表
當在文本編輯器中編輯屬性時,該服務很有用。 但是,我的一些編輯是組合框。 我希望在將屬性設置爲只讀時禁用下拉列表,這意味着用戶將能夠在組合框中看到選定的項目,但是當他單擊組合框旁邊的箭頭以查看選項時,什麼也不會發生。這不適用於當前的實施。我想我需要使用屬性的不同屬性。我試圖改變財產的「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中的屬性綁定到'Combobox'的'IsEnabled'屬性中。 – Gopichandar