Hello ,
I used PropertyGrid. Is it possible to add RadRadioButton In PropertyGrid
Thanks,
Nat.
I used PropertyGrid. Is it possible to add RadRadioButton In PropertyGrid
Thanks,
Nat.
2 Answers, 1 is accepted
0
Accepted
Hello Nat,
Thank you for writing.
You can achieve your requirement using custom PropertyGridItemElement with custom PropertyGridValueElement. Here is a sample implementation:
I hope this information helps. Should you have further questions, I would be glad to help.
Regards,
Desislava
Telerik
Thank you for writing.
You can achieve your requirement using custom PropertyGridItemElement with custom PropertyGridValueElement. Here is a sample implementation:
public Form1(){ InitializeComponent(); this.radPropertyGrid1.PropertyGridElement.PropertyTableElement.ItemHeight = 37; this.radPropertyGrid1.CreateItemElement += radPropertyGrid1_CreateItemElement; this.radPropertyGrid1.Editing += radPropertyGrid1_Editing; this.radPropertyGrid1.SelectedObject = new Item(123, "Title", DeliveryType.PickUp);}private void radPropertyGrid1_Editing(object sender, PropertyGridItemEditingEventArgs e){ if (e.Item.Name == "DeliveryType") { e.Cancel = true; }}private void radPropertyGrid1_CreateItemElement(object sender, CreatePropertyGridItemElementEventArgs e){ if (e.Item.Name == "DeliveryType") { 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{ StackLayoutElement stackPanel; protected override void CreateChildElements() { base.CreateChildElements(); stackPanel = new StackLayoutElement(); stackPanel.Orientation = Orientation.Vertical; foreach (var enumItem in Enum.GetValues(typeof(DeliveryType))) { RadRadioButtonElement rb = new RadRadioButtonElement(); rb.Text = enumItem.ToString(); rb.ToggleStateChanged += rb_ToggleStateChanged; stackPanel.Children.Add(rb); } this.Children.Add(stackPanel); } private void rb_ToggleStateChanged(object sender, StateChangedEventArgs args) { RadRadioButtonElement rb = sender as RadRadioButtonElement; PropertyGridItem item = this.VisualItem.Data as PropertyGridItem; if (item != null && rb.Text != item.FormattedValue && rb.ToggleState == ToggleState.On) { item.Value = rb.Text; } } public override void Synchronize() { PropertyGridItem item = this.VisualItem.Data as PropertyGridItem; foreach (RadRadioButtonElement rb in stackPanel.Children) { if (rb.Text == item.FormattedValue) { rb.ToggleState = ToggleState.On;
break; } } }}public class Item{ public int Id { get; set; } public string Title { get; set; } public DeliveryType DeliveryType { get; set; } public Item(int id, string title, DeliveryType deliveryType) { this.Id = id; this.Title = title; this.DeliveryType = deliveryType; }}public enum DeliveryType{ Delivery, PickUp,}I hope this information helps. Should you have further questions, I would be glad to help.
Regards,
Desislava
Telerik
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos and start improving your app based on facts, not hunches.
0
natcha
Top achievements
Rank 1
answered on 03 Jul 2014, 02:08 AM
Desislava, Thank you for your answer ^^
