To reproduce: List<PropertyStoreItem> propertyStoreItems = new List<PropertyStoreItem>(); propertyStoreItems.Add(modelItem); RadPropertyStore store = new RadPropertyStore(); store.AddRange(propertyStoreItems); Workaround: Iterate the collection and use the Add method foreach (var item in propertyStoreItems) { store.Add(item); }
Currently when one filters properties through the Search bar they are filtered based on their Name instead of the display name or label.
Steps to reproduce: 1. Add a RadPropertyGrid to a form 2. Set the SelectedObject property to an object with an enum property 3. Open the enum property for edit. 4. Click on another control that can take focus e.g. the form control box buttons You will see that the editor remains open.
Steps to reproduce: 1. Add a RadPropertyGrid to a form. 2. Set the SelectedObjects property to a array of one object that has a property decorated with the ReadOnly attribute. Run the project and you will see that the read only property is not displayed.
Pressing Ctrl + Enter should create a new row in the editor instead of closing it. WORKAROUND: Replace the default editor with the following one in the EditorRequired event: class MyPropertyGridTextBoxEditor : PropertyGridTextBoxEditor { protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e) { if (e.Modifiers == System.Windows.Forms.Keys.Control && e.KeyCode == System.Windows.Forms.Keys.Enter) { return; } base.OnKeyDown(e); } }
To reproduce: public Form1() { InitializeComponent(); PropertyStoreItem intItem = new PropertyStoreItem(typeof(int), "Integer", 1); PropertyStoreItem floatItem = new PropertyStoreItem(typeof(float), "Float", 1f, "Property storing a floating point value."); PropertyStoreItem stringItem = new PropertyStoreItem(typeof(string), "String", "telerik", "Property storing a string value", "Telerik"); PropertyStoreItem dockItem = new PropertyStoreItem(typeof(DockStyle), "Dock", DockStyle.Top, "Property containing DockStyle value", "Layout", false); RadPropertyStore store = new RadPropertyStore(); store.Add(intItem); store.Add(floatItem); store.Add(stringItem); store.Add(dockItem); this.radPropertyGrid1.SelectedObject = store; } private void radButton1_Click(object sender, EventArgs e) { PropertyStoreItem intItem = new PropertyStoreItem(typeof(int), "Integer111", 1); PropertyStoreItem floatItem = new PropertyStoreItem(typeof(float), "Float111", 1f, "Property storing a floating point value.111"); PropertyStoreItem stringItem = new PropertyStoreItem(typeof(string), "String111", "telerik", "Property storing a string value", "Telerik111"); PropertyStoreItem dockItem = new PropertyStoreItem(typeof(DockStyle), "Dock111", DockStyle.Top, "Property containing DockStyle value", "Layout111", false); RadPropertyStore store = new RadPropertyStore(); store.Add(intItem); store.Add(floatItem); store.Add(stringItem); store.Add(dockItem); this.radPropertyGrid1.SelectedObject = store; } WORKAOUND: radPropertyGrid1.PropertyGridElement.SplitElement.HelpElement.TitleText = ""; radPropertyGrid1.PropertyGridElement.SplitElement.HelpElement.ContentText = "";
Currently RadPropertyGrid uses CurrentUICulture for localization, while it should use CurrentCulture.
Steps to reproduce: 1. Create a custom type descriptor for an object that returns less properties than the default one. 2. Set this descriptor to the object 3. Set an object array containing two such objects to the SelectedObjects property of RadPropertyGrid 4. Run the project and you will see all properties of the object are shown disrespecting the custom type descriptor.
Steps to reproduce: 1. Set a PasswordPropertyText(true) attribute to a string property of an object. 2. Set the object as selected of a property grid. 3. Open the password property for edit. Any other text property you try to edit will be handled as if it was password.
Currently users can only specify a UITypeEditor. They should be able to specify which BaseInputEditor to be used for a given property when they edit it: [Editor(typeof(PropertyGridBrowseEditor), typeof(BaseInputEditor)] public string FilePath { get; set; }
In some cases when the selected object is changed while a bool property is selected an InvalidCastExceptions is thrown. Check ticket for reproduction steps and project.
The RadPropertyGrid editing mechanism can be improved by adding ValueChanged/ing events similar to those in RadGridView.
RadPropertyGrid should not invalidate the properties when the help bar is resized.
RadPropertyGrid calls the TypeConverter methods GetStandardValuesSupported and GetStandardValues passing null as parameter when it should pass the property item. Code to reproduce: this.radPropertyGrid1.SelectedObject = new SomeClass(); public class SomeClass { [TypeConverter(typeof(CustomValueConverter))] public string CustomValue { get; set; } } public class CustomValueConverter : TypeConverter { public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { return base.GetStandardValues(context); } }
When editing a DateTime? property the property grid shows a text box editor instead of calendar.
The RadPropertyGrid implementation should be improved in a way that will allow users to override the methods that fire events like: OnEditorRequired, OnEditorInitialized, OnCustomGrouping etc. Resolution: 1. Inherit from PropertyGridTableElement and override the method you want. 2. Inherit from PropertyGridSplitElement and override the CreateTableElement() return your class from 1. 3. Inherit from PropertyGridElement and override the CreateSplitElement() return your class from 2. 4. Inherit from RadPropertyGrid and override the CreatePropertyGridElement() return your class from 3.
When applied to a property the editor for this property should show its text as a password.
FIX. RadPropertyGrid - setting the SelectedObject to something and then set it to a property store, does not remove the initial items Workaround: clear the items prior setting the property store: this.radPropertyGrid1.PropertyGridElement.PropertyTableElement.ListSource.Clear();
When using a the following property store item: this.PropertyStore.Add(typeof(Image) , "Test Image" , null ); the user cannot select an image via the BrowseEditor.
When you change the CurrentUICulture the string "(none)" in the PropertyGridItemElement is localized but when you open the editor, the text is still "(none)".