To reproduce: 1. Add a RadPropertyGrid and a RadButton. 2. Create custom PropertyGridItemElement with custom PropertyGridValueElement in order to display permanently RadDropDownListElement 3. Use the following code snippet: public Form1() { InitializeComponent(); this.radPropertyGrid1.CreateItemElement += radPropertyGrid1_CreateItemElement; this.radPropertyGrid1.Editing += radPropertyGrid1_Editing; } private void radPropertyGrid1_Editing(object sender, PropertyGridItemEditingEventArgs e) { if (e.Item.Name == "Direction") { e.Cancel = true; } } private void radPropertyGrid1_CreateItemElement(object sender, CreatePropertyGridItemElementEventArgs e) { PropertyGridItem item = (PropertyGridItem)e.Item; if (e.Item.Name == "Direction") { e.ItemElementType = typeof(CustomItemElement); } } public class CustomItemElement : PropertyGridItemElement { protected override PropertyGridValueElement CreatePropertyGridValueElement() { return new CustomPropertyGridValueElement(); } protected override Type ThemeEffectiveType { get { return typeof(PropertyGridItemElement); } } } public class CustomPropertyGridValueElement : PropertyGridValueElement { RadDropDownListElement dropdown; protected override void CreateChildElements() { base.CreateChildElements(); dropdown = new RadDropDownListElement(); dropdown.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList; this.Children.Add(dropdown); dropdown.DataSource = Enum.GetValues(typeof(Direction)); dropdown.SelectedIndexChanged += dropdown_SelectedIndexChanged; } private void dropdown_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e) { RadDropDownListElement ddle = sender as RadDropDownListElement; if (ddle != null && e.Position > -1) { PropertyGridItem item = this.VisualItem.Data as PropertyGridItem; if (item != null) { item.Value = ddle.Items[e.Position].DataBoundItem; } } } public override void Synchronize() { PropertyGridItem item = this.VisualItem.Data as PropertyGridItem; dropdown.SelectedValue = item.Value; } } public class Item { public int Id { get; set; } public Direction Direction { get; set; } public string Title { get; set; } public Item(int id, string title, Direction direction) { this.Id = id; this.Title = title; this.Direction = direction; } } public enum Direction { Up, Down, Left, Right } private void radButton1_Click(object sender, EventArgs e) { this.radPropertyGrid1.SelectedObject = new Item(123, "Title", Direction.Left); } When you click the button once, the RadPropertyGrid displays the desired data. However, if you click the button once again, ArgumentOutOfRangeException occurs. Workaround:wrap setting the SelectedObject in a SuspendLayout/ResumeLayout block: this.radPropertyGrid1.SuspendLayout(); this.radPropertyGrid1.SelectedObject = new Item(123, "Title", Direction.Left); this.radPropertyGrid1.ResumeLayout();