在我的WPF项目中,我有一个ListBox来显示来自List<string>
集合的项。我想让这些项的文本可编辑,因此我使用了一个ItemTemplate将它们包装在一个TextBox中(可能不是最好的方法,但我是WPF新手)。我一直无法将TextBoxes的Text属性简单地绑定到每个项的值。最后,我偶然发现了一个例子,它在Path属性中使用了一个点号或句点({Binding Path=.}
):
<ListBox ItemsSource="{Binding ElementName=recipesListbox,Path=SelectedItem.Steps}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=.}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
然而我不明白为什么简单地使用{Binding}
并不起作用。根据微软的说法,它引发了“双向绑定需要Path或XPath”异常:[...] 使用点(.)路径可以绑定到当前源。例如,Text =“{Binding}”等同于Text =“{Binding Path =.}”。有人能解释一下这种模糊的行为吗?此外,似乎{Binding Path=.}
并不一定会产生双向绑定,因为修改文本并移动焦点不会更新底层源(同一源还在DataGrid控件上显示和成功修改属性)。我肯定是错过了什么。