WPF绑定中的"{Binding Path=.}"是什么意思?

103

{Binding Path=.}在WPF绑定中代表什么意思?

我看到有些人使用它,但找不到任何解释。

除了{Binding /}之外,绑定语法中还有其他特殊符号吗?

2个回答

89

我几个月前发现了这份WPF数据绑定作弊表,并发现它非常有用,特别是对于正在学习WPF的人来说。其中有一些拼写错误,但仍然相当不错。

以下是一个小节选(应该具有表格格式):

基本绑定
{Binding} 将当前DataContext绑定到。
{Binding Name} 将当前DataContext的“Name”属性绑定到。
{Binding Name.Length} 将当前DataContext中Name属性对象的Length属性绑定到。
{Binding ElementName=SomeTextBox, Path=Text} 将名称为"SomeTextBox"或x:Name="SomeTextBox"的XAML元素的“Text”属性绑定到。

直接链接到作弊表


4
不错的问题,{Binding .} 是什么?我正在寻找解释,但找不到? - Emil
@batmaci,我想说它相当于 {Binding},但是我很久没有使用Xaml了,所以不确定。 - Ryan Versaw
1
@batmaci,多年以后... {Binding string}{Binding Path=string} 相似。string 并不是直接用于初始化 Path 属性,而是作为构造函数 Binding(string path) 的参数,然后初始化 Path 属性。这仅在字符串是 Binding 后的第一个标记时才有效,其余为常规初始化器(属性=值对)。了解到这一点,Binding . 实际上等同于 Binding Path=.,并且属性路径语法可在此处找到:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/propertypath-xaml-syntax?view=netframework-4.8。 - mins

70

这是绑定到当前源的速记方式。更多信息请参见此处

具体来说,从文档中可以看到:

可选地,可以使用点(.)路径绑定到当前源。例如,Text="{Binding}" 等同于 Text="{Binding Path=.}"


1
@Ray - 我也是这个想法。如果你要使用缩写,为什么要止步于此呢? - micahtan
5
我可以不同意MSDN,但仍然存在差异。{Binding}不能用于对象本身(双向绑定需要一个属性),而{Binding Path=.}可以使用。 - Sergey Aldoukhov
很容易: var s = "test"; DataContext=s;而在<TextBox Text={Binding}/>中 - 不起作用。但MSDN不是维基... - Sergey Aldoukhov
9
另一个例子: <TextBlock Text="{Binding Converter=...}"/> 不起作用,因为你必须设置路径(Path)。在这种情况下,Path=. 是有用的。 - Nicolas
{Binding}和{Binding Path=.}并不完全相同。这个问题指出了它们之间的区别。 - Grochni
显示剩余2条评论

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