我在XAML中使用了很多绑定,有时候在绑定中使用path=,有时候不用。 什么情况下需要使用path=,而什么情况下可以省略它呢?
如果使用Binding XAML扩展,它通常可以省略不写,因为它是默认属性。但当有多个属性时,为了清晰明了,必须显式指定。
原因在于Binding类有默认构造函数,当你有像{Binding FallbackValue='HelloWorld', Path=MyProperty}
这样的绑定时会使用默认构造函数,同时还有一个只接受一个参数Path的构造函数。
因此,在存在一系列属性/值对的情况下,绑定将被创建为
new Binding(){
Path="MyProperty"
ElementName="MyElement"
}
第二种形式用于像{Binding MyProperty, ...}
这样的绑定。在这种情况下,绑定被创建为
new Binding("MyProperty"){
ElementName = "MyElement",
...
}
始终指定 Path= 是正确的(也可能更正确),但是不指定也可以。
Path用于指定要绑定到的基础对象的属性名称。
当您绑定到DataContext时,可以省略Path:
{Binding MyProperty}
{Binding Path=MyProperty}
当您需要指定除DataContext之外的源时,可以使用Source
、RelativeSource
或ElementName
来引用对象,因此通常需要指定要设置绑定的属性:
<Button Background="{Binding ElementName=refButton, Path=Background}"/>
<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/>
{Binding MyProperty}
与
是相同的。{Binding Path=MyProperty}
当您将路径内联到属性时,需要使用Path =指定它
{Binding FallbackValue='HelloWorld', Path=MyProperty}
就像Richard Szalay所说,如果它是第一个属性,则是可选的。但是在我看来,如果您输入路径属性,则更容易阅读。此外,代码高亮显示效果更好。