在XAML中Path =有什么用?

Mic*_*ers 22 c# wpf xaml binding

我在XAML中使用了很多绑定,有时我在绑定中使用path =,有时不使用.在哪些情况下我需要路径=什么时候可以省略这个?

Ric*_*lay 13

它总是可以省略,因为它是Binding XAML扩展的默认属性.仅在使用多个属性时才明确指定.

  • 当涉及到标记扩展时,没有默认属性,就像我们在这里处理构造函数那样太模糊了.并且[不能总是省略](http://stackoverflow.com/a/9383001/546730). (3认同)

Phi*_*hil 12

这是因为Binding类有一个默认构造函数,当你有绑定时使用,{Binding FallbackValue='HelloWorld', Path=MyProperty}并且构造函数有一个参数Path.

因此,当存在属性/值对列表时,绑定将创建为

new Binding(){
  Path="MyProperty"
  ElementName="MyElement"
}
Run Code Online (Sandbox Code Playgroud)

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

new Binding("MyProperty"){
  ElementName = "MyElement",
  ...
}
Run Code Online (Sandbox Code Playgroud)

指定Path =总是正确的(也可能更正确),但没有它就可以逃脱.


Nat*_*txo 7

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

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

{Binding MyProperty}    

{Binding Path=MyProperty}
Run Code Online (Sandbox Code Playgroud)

当您需要指定DataContext以外的源时,您可以使用 Source,, RelativeSourceElementName引用该对象,因此您通常必须指定要为其设置绑定的属性:

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

<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/>
Run Code Online (Sandbox Code Playgroud)