FrameworkPropertyMetadata.Inherits Property


Gets or sets a value that indicates whether the value of the dependency property is inheritable.

Namespace:   System.Windows
Assembly:  PresentationFramework (in PresentationFramework.dll)

Public Property Inherits As Boolean

Property Value

Type: System.Boolean

true if the property value is inheritable; otherwise, false. The default is false.

Exception Condition

The metadata has already been applied to a dependency property operation, so that metadata is sealed and properties of the metadata cannot be set.

Property value inheritance is a feature of the WPF property system at the WPF framework level, whereby certain dependency properties can be locally set on an element at or near the root of a XAML element tree and then have their value inherited by all elements within the logical tree of child elements that also possess that property. Property value inheritance is not enabled by default, and enabling it does have some performance implications. For details, see Property Value Inheritance.


Although property value inheritance might appear to work for nonattached dependency properties, the inheritance behavior for a nonattached property through certain object-object divisions in the runtime tree is undefined. Always use RegisterAttached to register properties where you specify Inherits in the metadata.

Properties on derived classes of PropertyMetadata are typically defined in the object model as read-write. This is so they can be adjusted after initialization of the instance. However, after the metadata is consumed as part of a call to Register, AddOwner, or OverrideMetadata, the property system will seal that metadata instance and properties that convey the specifics of the metadata are now considered immutable. Attempting to set this property after IsSealed is true on this metadata instance will raise an exception.

Members of this class are not typically used in XAML.

The following example obtains the default metadata from various dependency property fields, queries the value of various FrameworkPropertyMetadata properties on it, and uses the information to populate a table to implement a "metadata browser".

pm = dp.GetMetadata(dp.OwnerType)
Dim fpm As FrameworkPropertyMetadata = TryCast(pm, FrameworkPropertyMetadata)
If fpm IsNot Nothing Then
	AffectsArrange.Text = If((fpm.AffectsArrange), "Yes", "No")
	AffectsMeasure.Text = If((fpm.AffectsMeasure), "Yes", "No")
	AffectsRender.Text = If((fpm.AffectsRender), "Yes", "No")
              [Inherits].Text = If((fpm.Inherits), "Yes", "No")
	IsDataBindingAllowed.Text = If((fpm.IsDataBindingAllowed), "Yes", "No")
	BindsTwoWayByDefault.Text = If((fpm.BindsTwoWayByDefault), "Yes", "No")

.NET Framework
Available since 3.0
Return to top