何时在WPF绑定中使用Path?

41
我看了很多 WPF 数据绑定的例子并在学习 MVVM 的过程中在很多不同的地方使用了这个功能,但是对我来说似乎有些不一致的是当你在绑定字符串中指定“Path=”时与仅输入要绑定到的属性之间的功能差异。例如,以下 XAML 属性之间的功能区别是什么:
DataMemberBinding="{Binding SomeProperty}"
DataMemberBinding="{Binding Path=SomeProperty}"
1个回答

47

没有功能上的区别。 Binding对象的默认属性是Path,这意味着如果您不指定要设置的属性,则会设置Path。

这是因为Binding对象有两个构造函数,一个是默认构造函数,另一个是带有单个字符串参数的构造函数。当您传递一个未标记的值时,该属性将被转发到匹配的构造函数中,在Binding的情况下,这将设置路径。这在概念上与属性的工作方式非常相似,即构造函数调用后跟可选参数,例如:

[AttributeUsage(AttributeTargets.Class), AllowMultiple = false, Inherited = false ]

也许远远超出了您实际提问的范畴,但我注意到这两者之间存在微小(可能无关紧要)的差异。由于我自己无法解释,因此我在这里发起了一个新问题here


那么,如果我想指定其他参数,比如模式,那么我需要明确将其标记为路径吗? - Corey Ogburn
8
不,如果路径是你的第一个参数,那么<TextBox Text="{Binding Width, ElementName=Button}"/>可以工作,但<TextBox Text="{Binding ElementName=Button, Width}"/>不行,<TextBox Text="{Binding ElementName=Button, Path=Width}"/>可以。 - Martin Harris

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