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
Inherited Members
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
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
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.