Category / Section
How to restrict editing of Properties in PropertyGrid?
3 mins read
In order to restrict the editing of the values in the PropertyGrid, the ReadOnly attribute can be used. The same has been explained in the following code:
XAML:
<Window x:Class="_186824PropertyGridsample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:_186824PropertyGridsample" xmlns:syncfusion="http://schemas.syncfusion.com/wpf" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <syncfusion:PropertyGrid x:Name="_Propertygrid"></syncfusion:PropertyGrid> </Grid> </Window>
C#
namespace PropertyGridSample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
propertygrid.SelectedObject = new Person();
}
}
public class Bank
{
[DisplayNameAttribute("Name")]
[DescriptionAttribute("Name of the bank.")]
public string Name
{
get;
set;
}
[DisplayNameAttribute("Customer ID")]
[DescriptionAttribute("Customer ID used for Net Banking.")]
[ReadOnly(true)]
public string CustomerID
{
get;
set;
}
[DescriptionAttribute("Password used for Net Banking.")]
public string Password
{
get;
set;
}
[DisplayNameAttribute("Account Number")]
[DescriptionAttribute("Bank Account Number.")]
public long AccountNumber
{
get;
set;
}
public override string ToString()
{
return Name;
}
}
public enum Gender
{
Male,
Female
}
public enum Country
{
UnitedStates,
Germany,
Canada,
Mexico,
Alaska,
Japan,
China,
Peru,
Chile,
Argentina,
Brazil
}
public class Person
{
public Person()
{
FirstName = "Carl";
LastName = "Johnson";
Age = 30;
Mobile = 91983467382;
Email = "carljohnson@gta.com";
ID = "0005A";
FavoriteColor = Brushes.Gray;
IsLicensed = true;
DOB = new DateTime(1987, 10, 16);
Key = "dasd798@79hiujodsa';psdoiu9*(Uj0JK)(";
Bank = new Bank() { Name = "Centura Banks", AccountNumber = 00987453721, CustomerID = "carljohnson", Password = "nuttertools" };
}
[CategoryAttribute("Identity")]
[DisplayNameAttribute("First Name")]
[DescriptionAttribute("First Name of the actual person.")]
public string FirstName
{
get;
set;
}
[CategoryAttribute("Identity")]
[DisplayNameAttribute("Last Name")]
[DescriptionAttribute("Last Name of the actual person.")]
public string LastName
{
get;
set;
}
[CategoryAttribute("Identity")]
[DisplayNameAttribute("ID")]
[DescriptionAttribute("ID of the actual person.")]
public string ID
{
get;
set;
}
[CategoryAttribute("Identity")]
[DisplayNameAttribute("Date of Birth")]
[DescriptionAttribute("Birth date of the actual person.")]
public DateTime DOB
{
get;
set;
}
[CategoryAttribute("Contact Details")]
[DisplayNameAttribute("Email ID")]
[DescriptionAttribute("Email address of the actual person.")]
public string Email
{
get;
set;
}
[CategoryAttribute("Contact Details")]
[DisplayNameAttribute("Mobile Number")]
[DescriptionAttribute("Contact Number of the actual person.")]
public long Mobile
{
get;
set;
}
[CategoryAttribute("Identity")]
[DisplayNameAttribute("Age")]
[DescriptionAttribute("Age of the actual person.")]
public int Age
{
get;
set;
}
[CategoryAttribute("Identity")]
[DisplayNameAttribute("Image")]
[DescriptionAttribute("Photo shot of the actual person.")]
public ImageSource Image
{
get;
set;
}
[CategoryAttribute("Favorites")]
[DisplayNameAttribute("Favorite Color")]
[DescriptionAttribute("Favorite color of the actual person.")]
public Brush FavoriteColor
{
get;
set;
}
[CategoryAttribute("Identity")]
[DisplayNameAttribute("Gender")]
[DescriptionAttribute("Gender information of the actual person.")]
public Gender Gender
{
get;
set;
}
[CategoryAttribute("Location")]
[DisplayNameAttribute("Country")]
[DescriptionAttribute("Country where the actual person locating.")]
public Country Country
{
get;
set;
}
[Browsable(false)]
public string MaritalStatus
{
get;
set;
}
[CategoryAttribute("License Details")]
[DisplayNameAttribute("IsLicensed")]
[DescriptionAttribute("Determines whether the person is licensed or not.")]
public bool IsLicensed
{
get;
set;
}
[CategoryAttribute("License Details")]
[DisplayNameAttribute("Key")]
[DescriptionAttribute("License key value of the person.")]
public string Key
{
get;
set;
}
[CategoryAttribute("Account Details")]
[DisplayNameAttribute("Bank")]
[DescriptionAttribute("Bank in which he has account.")]
//It shows how to set the field as ReadOnly
[ReadOnly(true)]
public Bank Bank
{
get;
set;
}
}
}

Fig i: It shows the Bank field is readonly property.
Sample Links: