问题
Recently i've read 'Databinding overview' article at MSDN and there is such sample code:
<TextBox.ToolTip>
<Binding RelativeSource="{RelativeSource Self}" Path="(Validation.Errors)[0].ErrorContent"/>
</TextBox.ToolTip>
I know that {}
means markup extensions but what mean ()
parentheses here? It would be nice someone share link to explanation such syntax. Thanks!
Path="(Validation.Errors)[0].ErrorContent"
回答1:
The ()
parentheses refer to Attached Properties.
Binding to an Attached Property
回答2:
Quoting the MSDN library (I'm quoting MSDN here because I couldn't have written it down better):
This syntax is generally used for one of the following cases:
- The path is specified in XAML that is in a style or template that does not have a specified
TargetType
. A qualified usage is generally not valid for cases other than this, because in non-style, non-template cases, the property exists on an instance, not a type.- The property is an attached property.
- You are binding to a static property.
For use as storyboard target, the property specified as
propertyName
must be aDependencyProperty
.
回答3:
(Validation.Errors)
references the attached property Errors
in the Validation
class. Since the binding has a RelativeSource = Self
, it's gonna look for the value of that attached property with respect to the TextBox itself.
回答4:
This below msdn link is neatly explaining about the validation rule and sequences as well as how to use.
http://msdn.microsoft.com/en-us/library/system.windows.controls.validation.errors.aspx
来源:https://stackoverflow.com/questions/14382581/what-do-parentheses-in-binding-paths-mean