Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Links the value of a property in a control template to be the value of another property on the templated control.
<object property="{TemplateBinding sourceProperty}" ... />
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
Value | Description |
---|---|
propertyName |
DependencyProperty.Name of the property being set in the setter syntax. |
sourceProperty |
Another dependency property that exists on the type being templated, specified by its DependencyProperty.Name. - or - A "dotted-down" property name that is defined by a different type than the target type being templated. This is actually a PropertyPath. See PropertyPath XAML Syntax. |
A TemplateBinding
is an optimized form of a Binding
for template scenarios, analogous to a Binding
constructed with {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}
. A TemplateBinding
is always a one-way binding, even if properties involved default to two-way binding. Both properties involved must be dependency properties. In order to achieve two-way binding to a templated parent use the following binding statement instead
{Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}
.
RelativeSource is another markup extension that is sometimes used in conjunction with or instead of TemplateBinding
in order to perform relative property binding within a template.
Describing control templates as a concept is not covered here; for more information, see Control Styles and Templates.
Attribute syntax is the most common syntax used with this markup extension. The string token provided after the TemplateBinding
identifier string is assigned as the Property value of the underlying TemplateBindingExtension extension class.
Object element syntax is possible, but it is not shown because it has no realistic application. TemplateBinding
is used to fill values within setters, using evaluated expressions, and using object element syntax for TemplateBinding
to fill <Setter.Property>
property element syntax is unnecessarily verbose.
TemplateBinding
can also be used in a verbose attribute usage that specifies the Property property as a property=value pair:
<object property="{TemplateBinding Property=sourceProperty}" ... />
The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. Because TemplateBinding
has only one settable property, which is required, this verbose usage is not typical.
In the WPF XAML processor implementation, the handling for this markup extension is defined by the TemplateBindingExtension class.
TemplateBinding
is a markup extension. Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. All markup extensions in XAML use the {
and }
characters in their attribute syntax, which is the convention by which a XAML processor recognizes that a markup extension must process the attribute. For more information, see Markup Extensions and WPF XAML.
.NET Desktop feedback feedback
.NET Desktop feedback is an open source project. Select a link to provide feedback:
Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowTraining
Module
Create a UI that uses data binding in .NET MAUI. - Training
Create a UI with data binding. Your UI automatically updates based on the latest data, while the data updates in response to changes in the UI.