Articles in this section
Category / Section

How to use CustomEditor of PropertyGrid to display particular property?

1 min read

How to use CustomEditor of PropertyGrid to display particular property?

CustomEditor support enables to set custom value editors for particular properties instead of default editors

In the below example by default TextBox is used to display String data type. By setting CustomEditor for this String property, SfTextBoxExt will be displayed as ValueEditor

The same has been explained in the below code example

MainWindow.xaml

 
<syncfusion:PropertyGrid x:Name="pgrid" HorizontalAlignment="Stretch" ButtonPanelVisibility="Visible"  VerticalAlignment="Stretch"  SearchBoxVisibility="Visible" DefaultPropertyPath="Content"  BorderThickness="0" Background="White"/>
 

 

MainWindow.xaml.cs

public MainWindow()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
            SkinStorage.SetVisualStyle(this, "Metro");
            this.pgrid.SelectedObject = new Customer();
        }
        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
 
            CustomEditor TextBoxEditor = new CustomEditor() { HasPropertyType = true, PropertyType = typeof(String) };
 
 
            TextBoxEditor.Editor = new CustomEditorPropertyGridSample.ICustomTypeEditors.SfTextBoxEditor();
 
 
            pgrid.CustomEditorCollection.Add(TextBoxEditor);
 
            pgrid.RefreshPropertygrid();
        }

 

Customer.cs

public class Customer
{
private string _name;
private int _age;
private DateTime _dateOfBirth;
private string _SSN;
private string _address;
private string _email;
private bool _frequentBuyer;
 
public string Name
{
get
{
return _name;
}
set
{
_name=value;
}
}
 
public string SSN
{
get
{
return _SSN;
}
set
{
_SSN=value;
}
}
 
public string Address
{
get
{
return _address;
}
set
{
_address=value;
}
}
 
public DateTime DateOfBirth
{
get
{
return _dateOfBirth;
}
set
{
_dateOfBirth=value;
}
}
 
public int Age
{
get
{
return _age;
}
set
{
_age=value;
}
}
 
public bool FrequentBuyer
{
get
{
return _frequentBuyer;
}
set
{
_frequentBuyer=value;
}
}
 
public string Email
{
get
{
return _email;
}
set
{
_email=value;
}
}
}

 

ICustomTypeEditors.cs

public  class ICustomTypeEditors
    {
        public class SfTextBoxEditor : ITypeEditor
        {
 
            public void Attach(PropertyViewItem property, PropertyItem info)
            {
                if (info.CanWrite)
                {
                    var binding = new Binding("Value")
                    {
                        Mode = BindingMode.TwoWay,
                        Source = info,
                        ValidatesOnExceptions = true,
                        ValidatesOnDataErrors = true
                    };
                    BindingOperations.SetBinding(text, SfTextBoxExt.TextProperty, binding);
                }
                else
                {
                   
                    var binding = new Binding("Value")
                    {
 
                        Source = info,
                        ValidatesOnExceptions = true,
                        ValidatesOnDataErrors = true
                    };
                    BindingOperations.SetBinding(text, SfTextBoxExt.TextProperty, binding);
                }
            }
 
            SfTextBoxExt text;
            public object Create(PropertyInfo propertyInfo)
            {
                text = new SfTextBoxExt() { };
              
              
                return text;
            }
 
            public void Detach(PropertyViewItem property)
            {
                throw new NotImplementedException();
            }
        }
    }

 

In the following screenshot, SfTextBoxExt is displayed as Value Editor

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied