skip navigation
  • Product Bundles

    DevCraft

    All Telerik .NET tools and Kendo UI JavaScript components in one package. Now enhanced with:

    • AI Coding Assistants
    • Embedded Reporting
    • Document Processing Libraries
    • SSO Account Sign-in

    Web

    Kendo UI UI for Angular UI for Vue UI for jQuery KendoReact UI for Blazor UI for ASP.NET Core UI for ASP.NET MVC UI for ASP.NET AJAX

    Mobile

    UI for .NET MAUI

    Document Management

    Telerik Document Processing

    Desktop

    UI for .NET MAUI UI for WinUI UI for WinForms UI for WPF

    Reporting

    Telerik Reporting Telerik Report Server

    Testing & Mocking

    Test Studio Telerik JustMock

    CMS

    Sitefinity

    AI Productivity Tools

    AI Coding Assistants

    UI/UX Tools

    ThemeBuilder Design System Kit Templates and Building Blocks

    Debugging

    Fiddler Fiddler Everywhere Fiddler Classic Fiddler Everywhere Reporter FiddlerCore

    Free Tools

    KendoReact Free VB.NET to C# Converter Testing Framework
    View all products
  • Overview
  • Demos
    • What's New
    • Roadmap
    • Release History
  • Support and Learning

    • Support and Learning Hub
    • First Steps
    • Docs
    • Demos
    • Virtual Classroom
    • Forums
    • Videos
    • Blogs
    • Accessibility
    • Submit a Ticket

    Productivity and Design Tools

    • Visual Studio Extensions
    • Visual Studio Templates
    • Embedded Reporting
  • Pricing
  • Shopping cart
    • Account Overview
    • Your Licenses
    • Downloads
    • Support Center
    • Forum Profile
    • Payment Methods
    • Edit Profile
    • Log out
  • Login
  • Contact Us
  • Try now

Class RadProperty

Represents a dependency property definition in the Telerik Presentation Framework, providing the foundation for the advanced property system that enables theming, styling, inheritance, and data binding throughout the framework.

Inheritance
System.Object
RadProperty
Inherited Members
System.Object.ToString()
System.Object.Equals(System.Object, System.Object)
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.GetType()
System.Object.MemberwiseClone()
Namespace: Telerik.WinControls
Assembly: Telerik.WinControls.dll

Syntax

public class RadProperty
Remarks

RadProperty is the core component of TPF's dependency property system, inspired by WPF but tailored for WinForms. Unlike traditional properties, RadProperty supports multiple value sources, property inheritance, change notifications, validation, and coercion.

Properties are registered once per type with metadata defining defaults, inheritance behavior, and callbacks. The value resolution system follows precedence: Local Value, Style Value, Inherited Value, Default Value, with validation and coercion applied throughout the pipeline.

RadProperty maintains strict type safety, supports property inheritance where derived types can override base metadata, and enables efficient property lookup through a global registry. Created through Register(), RegisterAttached(), and AddOwner() factory methods.

Fields

UnsetValue

Declaration
public static readonly object UnsetValue
Field Value
System.Object

Properties

FullName

Declaration
public string FullName { get; }
Property Value
System.String

GlobalIndex

Declaration
public int GlobalIndex { get; }
Property Value
System.Int32

Name

Gets the name of this property.

Declaration
public string Name { get; }
Property Value
System.String

The string name that uniquely identifies this property within its owner type. This is the same name used when registering the property.

Remarks

Property names must be unique within their owner type hierarchy. The name is used for property lookup operations and debugging. Once a property is registered, its name cannot be changed.

OwnerType

Gets the type that owns this property definition.

Declaration
public Type OwnerType { get; }
Property Value
System.Type

The System.Type that originally registered this property. This is typically the type where the property was first defined, though the property may be inherited by derived types.

Remarks

The owner type is set when the property is registered through Register(String, Type, Type, RadPropertyMetadata) or RegisterAttached(String, Type, Type, RadPropertyMetadata). Derived types can add metadata through AddOwner(Type) but the original owner type remains unchanged.

PropertyType

Gets the type of values that can be stored in this property.

Declaration
public Type PropertyType { get; }
Property Value
System.Type

The System.Type that represents the data type of this property. All values assigned to this property must be compatible with this type.

Remarks

This is the type specified when the property was registered through Register(String, Type, Type, RadPropertyMetadata) or RegisterAttached(String, Type, Type, RadPropertyMetadata). The property system uses this type for validation and type checking during value assignment and retrieval operations.

PropertyTypeIsValueType

Declaration
public bool PropertyTypeIsValueType { get; }
Property Value
System.Boolean

ValidateValueCallback

Declaration
public ValidateValueCallback ValidateValueCallback { get; }
Property Value
ValidateValueCallback

Methods

AddOwner(Type)

Declaration
public RadProperty AddOwner(Type ownerType)
Parameters
System.Type ownerType

Returns
RadProperty

AddOwner(Type, RadPropertyMetadata)

Declaration
public RadProperty AddOwner(Type ownerType, RadPropertyMetadata typeMetadata)
Parameters
System.Type ownerType

RadPropertyMetadata typeMetadata

Returns
RadProperty

Equals(Object)

Declaration
public override bool Equals(object obj)
Parameters
System.Object obj

Returns
System.Boolean

Overrides
System.Object.Equals(System.Object)

Find(String, String)

Declaration
public static RadProperty Find(string className, string propertyName)
Parameters
System.String className

System.String propertyName

Returns
RadProperty

Find(Type, String)

Declaration
public static RadProperty Find(Type objectType, string propertyName)
Parameters
System.Type objectType

System.String propertyName

Returns
RadProperty

FindClrProperty()

Declaration
public PropertyDescriptor FindClrProperty()
Returns
System.ComponentModel.PropertyDescriptor

FindSafe(String, String)

Declaration
public static RadProperty FindSafe(string className, string propertyName)
Parameters
System.String className

System.String propertyName

Returns
RadProperty

FindSafe(Type, String)

Declaration
public static RadProperty FindSafe(Type objectType, string propertyName)
Parameters
System.Type objectType

System.String propertyName

Returns
RadProperty

GetHashCode()

Declaration
public override int GetHashCode()
Returns
System.Int32

Overrides
System.Object.GetHashCode()

GetMetadata(RadObject)

Declaration
public RadPropertyMetadata GetMetadata(RadObject radObject)
Parameters
RadObject radObject

Returns
RadPropertyMetadata

GetMetadata(RadObjectType)

Declaration
public RadPropertyMetadata GetMetadata(RadObjectType radObjectType)
Parameters
RadObjectType radObjectType

Returns
RadPropertyMetadata

IsValidType(Object)

Determines whether the specified value is type-compatible with this property.

Declaration
public bool IsValidType(object value)
Parameters
System.Object value

The value to check for type compatibility.

Returns
System.Boolean

True if the value is type-compatible; otherwise, false.

Remarks

This method only checks type compatibility and does not invoke custom validation callbacks. Use IsValidValue for complete validation including custom validation logic.

IsValidValue(Object, RadObject)

Determines whether the specified value is valid for this property on the given instance.

Declaration
public bool IsValidValue(object value, RadObject instance)
Parameters
System.Object value

The value to validate.

RadObject instance

The RadObject instance where the value would be applied.

Returns
System.Boolean

True if the value is valid; otherwise, false.

Remarks

This method performs both type checking and custom validation. It first verifies that the value is compatible with the property type, then calls the ValidateValueCallback if one was specified during property registration.

OverrideMetadata(Type, RadPropertyMetadata)

Declaration
public void OverrideMetadata(Type forType, RadPropertyMetadata typeMetadata)
Parameters
System.Type forType

RadPropertyMetadata typeMetadata

Register(String, Type, Type, RadPropertyMetadata)

Registers a new dependency property with the specified metadata.

Declaration
public static RadProperty Register(string name, Type propertyType, Type ownerType, RadPropertyMetadata typeMetadata)
Parameters
System.String name

The name of the property to register.

System.Type propertyType

The type of the property value.

System.Type ownerType

The type that owns this property.

RadPropertyMetadata typeMetadata

Property metadata including default value, inheritance behavior, and callbacks.

Returns
RadProperty

A RadProperty identifier that can be used to set or get property values.

Remarks

This is the primary method for registering properties that belong to a specific type. The property can be accessed only through instances of the ownerType or its derived types. Use RegisterAttached(String, Type, Type, RadPropertyMetadata) for properties that can be applied to any RadObject.

Register(String, Type, Type, RadPropertyMetadata, ValidateValueCallback)

Registers a new dependency property with metadata and a validation callback.

Declaration
public static RadProperty Register(string name, Type propertyType, Type ownerType, RadPropertyMetadata typeMetadata, ValidateValueCallback validateValueCallback)
Parameters
System.String name

The name of the property to register.

System.Type propertyType

The type of the property value.

System.Type ownerType

The type that owns this property.

RadPropertyMetadata typeMetadata

Property metadata including default value, inheritance behavior, and callbacks.

ValidateValueCallback validateValueCallback

A callback method to validate property values before they are set.

Returns
RadProperty

A RadProperty identifier that can be used to set or get property values.

Remarks

This overload provides validation capabilities, allowing you to verify property values before they are assigned. The validation callback is called for every value assignment and should return true for valid values, false for invalid ones.

RegisterAttached(String, Type, Type, RadPropertyMetadata)

Registers an attached property that can be applied to any RadObject instance.

Declaration
public static RadProperty RegisterAttached(string name, Type propertyType, Type ownerType, RadPropertyMetadata typeMetadata)
Parameters
System.String name

The name of the attached property to register.

System.Type propertyType

The type of the property value.

System.Type ownerType

The type that defines this attached property.

RadPropertyMetadata typeMetadata

Property metadata including default value and callbacks.

Returns
RadProperty

A RadProperty identifier for the attached property.

Remarks

Attached properties are a special kind of property that can be set on any RadObject, not just instances of the ownerType. This is useful for layout properties, styling hints, and other cross-cutting concerns that need to be applied broadly.

RegisterAttached(String, Type, Type, RadPropertyMetadata, ValidateValueCallback)

Registers an attached property with validation capabilities.

Declaration
public static RadProperty RegisterAttached(string name, Type propertyType, Type ownerType, RadPropertyMetadata typeMetadata, ValidateValueCallback validateValueCallback)
Parameters
System.String name

The name of the attached property to register.

System.Type propertyType

The type of the property value.

System.Type ownerType

The type that defines this attached property.

RadPropertyMetadata typeMetadata

Property metadata including default value and callbacks.

ValidateValueCallback validateValueCallback

A callback method to validate property values before they are set.

Returns
RadProperty

A RadProperty identifier for the attached property.

Remarks

This overload combines attached property functionality with value validation, ensuring that only valid values can be assigned to the property regardless of which RadObject instance the property is applied to.

Extension Methods

SvgExtentions.Traverse<T>(T, Func<T, IEnumerable<T>>)
SvgExtentions.TraverseDepthFirst<T>(T, Func<T, IEnumerable<T>>)
Getting Started
  • Install Now
  • Demos
  • Step-by-Step Tutorial
  • Sample Applications
  • SDK Samples
  • Visual Studio Extensions
Support Resources
  • Code Library
  • Knowledge Base
  • Videos
Community
  • Forums
  • Blogs
  • Feedback Portal
  • Document Processing Feedback Portal

Copyright © 2018 Progress Software Corporation and/or its subsidiaries or affiliates.
All Rights Reserved.

Progress, Telerik, and certain product names used herein are trademarks or registered trademarks of Progress Software Corporation and/or one of its subsidiaries or affiliates in the U.S. and/or other countries. See Trademarks for appropriate markings.