XAML中的Path=有什么用处?

24

我在XAML中使用了很多绑定,有时候在绑定中使用path=,有时候不用。 什么情况下需要使用path=,而什么情况下可以省略它呢?


5个回答

15

如果使用Binding XAML扩展,它通常可以省略不写,因为它是默认属性。但当有多个属性时,为了清晰明了,必须显式指定。


谢谢...在这种情况下,我将删除关键字(至少如果语法高亮仍然像另一个评论中那样好)。 (我可以在几分钟内接受它)。 - Michel Keijzers
3
在标记扩展中,不存在默认属性这样的东西,这种说法过于模糊,因为我们在处理构造函数。它也不能总是被省略,具体可以参考此链接:https://dev59.com/Hm855IYBdhLWcg3wfUjQ#9383001。 - H.B.

12

原因在于Binding类有默认构造函数,当你有像{Binding FallbackValue='HelloWorld', Path=MyProperty}这样的绑定时会使用默认构造函数,同时还有一个只接受一个参数Path的构造函数。

因此,在存在一系列属性/值对的情况下,绑定将被创建为

new Binding(){
  Path="MyProperty"
  ElementName="MyElement"
}

第二种形式用于像{Binding MyProperty, ...}这样的绑定。在这种情况下,绑定被创建为

new Binding("MyProperty"){
  ElementName = "MyElement",
  ...
}

始终指定 Path= 是正确的(也可能更正确),但是不指定也可以。


7

Path用于指定要绑定到的基础对象的属性名称。

当您绑定到DataContext时,可以省略Path:

{Binding MyProperty}    

{Binding Path=MyProperty}

当您需要指定除DataContext之外的源时,可以使用SourceRelativeSourceElementName来引用对象,因此通常需要指定要设置绑定的属性:

<Button Background="{Binding ElementName=refButton, Path=Background}"/>

<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/>

4
当您在Binding语句后直接写属性路径时,可以省略Path=。
{Binding MyProperty}

是相同的。
{Binding Path=MyProperty}

当您将路径内联到属性时,需要使用Path =指定它

{Binding FallbackValue='HelloWorld', Path=MyProperty}

3

就像Richard Szalay所说,如果它是第一个属性,则是可选的。但是在我看来,如果您输入路径属性,则更容易阅读。此外,代码高亮显示效果更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接