Extended Library for WPF and Silverlight | ComponentOne
PropertyGrid / Task-Based Help / Customizing Display Names
In This Topic
    Customizing Display Names
    In This Topic

    By default, the labels shown next to each property display the property name. This works fine in many cases, but you may want to customize the display to provide more descriptive names. The easiest way to achieve this is to decorate the properties on the object with custom attributes and by setting the Name property in the Display attribute (note that the Display attribute is defined in the C1.WPF.Extended namespace, in the C1.WPF.Extended assembly).

    For example, you could define the Display attribute in the class itself and set the value for the Name property as in the following code:

    Visual Basic
    Copy Code
    Public Class Customer
    Private _Name As String
        <Display(Name:="Customer Name")> _
        Public Property Name() As String
            Get
                Return _Name
            End Get
            Set(ByVal value As String)
                _Name = value
            End Set
        End Property
      
    Private _EMail As String
        <Display(Name:="e-Mail address")> _
        Public Property EMail() As String
            Get
                Return _EMail
            End Get
            Set(ByVal value As String)
                _EMail = value
            End Set
        End Property
      
    Private _Address As String
        Public Property Address() As String
            Get
                Return _Address
            End Get
            Set(ByVal value As String)
                _Address = value
            End Set
        End Property
      
    Private _CustomerSince As DateTime
        <Display(Name:="Customer Since")> _
        Public Property CustomerSince() As DateTime
            Get
                Return _CustomerSince
            End Get
            Set(ByVal value As DateTime)
                _CustomerSince = value
            End Set
        End Property
      
    Private _SendNewsletter As Boolean
        <Display(Name:="Send Newsletter")> _
        Public Property SendNewsletter() As Boolean
            Get
                Return _SendNewsletter
            End Get
            Set(ByVal value As Boolean)
                _SendNewsletter = value
            End Set
        End Property
      
    Private _PointBalance As System.Nullable(Of Integer)
        <Display(Name:="Point Balance")> _
        Public Property PointBalance() As System.Nullable(Of Integer)
            Get
                Return _PointBalance
            End Get
            Set(ByVal value As System.Nullable(Of Integer))
                _PointBalance = value
            End Set
        End Property
    End Class
    

    C#
    Copy Code
    public class Customer
    {
      [Display(Name = "Customer Name")]
      public string Name { get; set; }
    
      [Display(Name = "e-Mail address")]
      public string EMail { get; set; }
    
      public string Address { get; set; }
    
      [Display(Name = "Customer Since")]
      public DateTime CustomerSince { get; set; }
    
      [Display(Name ="Send Newsletter")]
      public bool SendNewsletter { get; set; }
    
      [Display(Name ="Point Balance")]
      public int? PointBalance { get; set; }
    }
    

     

    The C1PropertyGrid uses this additional information and displays the customer as shown below:

     

     

    This method requires that you have access to the class being displayed in the C1PropertyGrid. If you want to change the display strings but cannot modify the class being shown, then you would have to use the C1PropertyGrid.PropertyAttributes property to provide explicit information about each property you want to show on the C1PropertyGrid.