【问题标题】:What is the use of Path= in XAML?XAML 中 Path= 的用途是什么?
【发布时间】:2012-03-08 19:45:38
【问题描述】:

我在 XAML 中使用了很多绑定,有时我在绑定中使用 path=,有时不使用。 在哪些情况下我需要 path= 以及何时可以省略它?

【问题讨论】:

标签: c# wpf xaml binding


【解决方案1】:

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

【讨论】:

  • 谢谢......在这种情况下,我将删除关键字(至少如果语法突出显示仍然像另一条评论一样好)。 (我可以在几分钟内接受)。
  • 在标记扩展方面没有默认属性这样的东西,这样说太含糊了,因为我们在这里处理的是构造函数。还有cannot always be omitted
【解决方案2】:

这是因为 Binding 类有一个默认构造函数,当您有 {Binding FallbackValue='HelloWorld', Path=MyProperty} 之类的绑定和具有单个参数 Path 的构造函数时使用该构造函数。

所以当有一个属性/值对列表时,绑定被创建为

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

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

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

指定 Path= 总是正确的(并且可能更正确),但没有它你也可以逃脱。

【讨论】:

    【解决方案3】:

    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}
      

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-27
          相关资源
          最近更新 更多