6 Answers, 1 is accepted
0
Hello Hugues,
Thank you for writing.
If I understand your requirement correctly, you are trying to create an ExpandableObjectConverter and assign it to a specific property at run time. For this purpose, you can use the following code snippet:
If it is not the exact case, I would kindly ask you to provide a more detailed explanation about the behavior that you are trying to achieve. Thank you in advance.
I hope this information helps. Should you have further questions, I would be glad to help.
Regards,
Desislava
Telerik
Thank you for writing.
If I understand your requirement correctly, you are trying to create an ExpandableObjectConverter and assign it to a specific property at run time. For this purpose, you can use the following code snippet:
public Form1(){ InitializeComponent(); PropertyDescriptor prop = TypeDescriptor.GetProperties(typeof(Item))["Cell"]; TypeConverter tc = prop.Converter; typeof(PropertyDescriptor).GetField("converter", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(prop, new MyConverter()); this.radPropertyGrid1.SelectedObject = new Item(123,new Cell(3.7m,4.2m),"test");}public class Item{ public int Id { get; set; } public Cell Cell { get; set; } public string Title { get; set; } public Item(int id, Cell cell, string title) { this.Id = id; this.Cell = cell; this.Title = title; }}public class Cell{ public decimal X { get; set; } public decimal Y { get; set; } public Cell(decimal x, decimal y) { this.X = x; this.Y = y; }}public class MyConverter:ExpandableObjectConverter{ public override bool CanConvertTo(ITypeDescriptorContext context, System.Type destinationType) { if (destinationType == typeof(string)) return true; return base.CanConvertTo(context, destinationType); } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, System.Type destinationType) { Cell cell = value as Cell; if (destinationType == typeof(System.String) && value != null) { return ("X: " + cell.X + " Y: " + cell.Y); } return base.ConvertTo(context, culture, value, destinationType); } public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) { return true; } return base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { string[] tokens = (value + "").Split(new string[] { "X: ", "Y: " }, StringSplitOptions.RemoveEmptyEntries) ; if (tokens.Length == 2) { decimal x; decimal y; if (decimal.TryParse(tokens[0], out x) && decimal.TryParse(tokens[1], out y)) { return new Cell(x,y); } } return base.ConvertFrom(context, culture, value); }}If it is not the exact case, I would kindly ask you to provide a more detailed explanation about the behavior that you are trying to achieve. Thank you in advance.
I hope this information helps. Should you have further questions, I would be glad to help.
Regards,
Desislava
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
0
Hugues
Top achievements
Rank 1
answered on 15 Dec 2014, 04:24 PM
This is not quite what i am looking for. I have a class which contains an array of variables. What i want to do is create an Expandable object of all the elements in the array at runtime. So on the top level it would say foo for example and a arrow next to it. When i click the arrow i want to see a drop down of all the elements in my array.
Thanks.
Thanks.
0
Hugues
Top achievements
Rank 1
answered on 16 Dec 2014, 08:04 PM
I have solved it by Inheriting ICustomTypeDescriptor, and create an custom PropertyDescriptor.
0
Hello Hugues,
Thank you for writing back.
I am glad that you have found a solution which suits your requirement. I think that the Customized display of collection data in a PropertyGrid Code Project example is quite useful on this topic.
Should you have further questions, I would gladly assist you.
Regards,
Desislava
Telerik
Thank you for writing back.
I am glad that you have found a solution which suits your requirement. I think that the Customized display of collection data in a PropertyGrid Code Project example is quite useful on this topic.
Should you have further questions, I would gladly assist you.
Regards,
Desislava
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
0
fbi
Top achievements
Rank 1
answered on 14 Dec 2016, 04:36 PM
Hi,
is it possible to get the propertygrid in ConvertTo ?
Best regards
Fritz
0
Hello Fritz,
Thank you for writing.
In order to access the RadPropertyGrid in the ConvertTo, you can achieve it when the ITypeDescriptorContext is PropertyGridItem. Here is a sample code snippet:
I hope this information helps. Should you have further questions I would be glad to help.
Regards,
Dess
Telerik by Progress
Thank you for writing.
In order to access the RadPropertyGrid in the ConvertTo, you can achieve it when the ITypeDescriptorContext is PropertyGridItem. Here is a sample code snippet:
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, System.Type destinationType) { PropertyGridItem item = context as PropertyGridItem; if (item != null) { RadPropertyGrid propertyGrid = item.PropertyGridTableElement.ElementTree.Control as RadPropertyGrid; } Cell cell = value as Cell; if (destinationType == typeof(System.String) && value != null) { return ("X: " + cell.X + " Y: " + cell.Y); } return base.ConvertTo(context, culture, value, destinationType);}I hope this information helps. Should you have further questions I would be glad to help.
Regards,
Dess
Telerik by Progress
Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
