2012-02-17 145 views
18

我在XAML中使用了很多绑定,有时我在绑定中使用path =,有时候不使用。 在哪些情况下,我是否需要路径=以及何时可以忽略此?Path =在XAML中有什么用途?

+4

相关:(http://stackoverflow.com/ [之间{结合属性名}和{绑定路径=属性名}不同]问题/ 4306657 /差between- binding-propertyname-and-binding-path-propertyname) – 2012-02-21 19:15:16

回答

9

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

+0

谢谢......在这种情况下,我将删除关键字(至少如果语法突出显示在另一评论中仍然很好)。 (我可以在几分钟内接受它)。 – 2012-02-17 12:03:26

+3

当涉及到标记扩展时,没有这种东西作为默认属性,可以这么说,因为我们在这里处理构造函数时太模糊了。并且[不能总是省略](http://stackoverflow.com/a/9383001/546730)。 – 2012-02-21 19:18:12

4

当您直接在Binding语句后面写入属性路径时,您可以随时省略Path =。

{Binding MyProperty} 

相同

{Binding Path=MyProperty} 

当你内嵌的路径,你需要与路径指定它=

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

像理查德·绍洛伊说的财产,它是可选的,如果这是第一个物业。但是在我的观点中,如果你输入路径属性,读起来更容易。代码突出显示看起来更好。

9

这是由于绑定类有一个默认的构造函数,当你有一个像{Binding FallbackValue='HelloWorld', Path=MyProperty}绑定使用,并且具有单个参数路径构造的事实。

因此,当有属性/值对的列表作为

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

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

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

它总是正确的(也可能是更正确的)来指定路径=,但你可以逃脱离不开它。

6

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

当您绑定到DataContext,则可以省略路径:

{Binding MyProperty}  

{Binding Path=MyProperty} 

当你需要指定其他源比的DataContext你可以使用SourceRelativeSource,或者ElementName来指代对象,所以你通常必须指定要设置您的结合,其中其属性:

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

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