В моем проекте WPF у меня есть ListBox, который отображает элементы из коллекции List<string>
. Я хотел сделать текст этих элементов редактируемым, поэтому я обернул каждый из них в ItemTemplate с помощью TextBox (возможно, это не лучший способ, но я новичок в WPF). У меня возникли проблемы, просто привязав свойство TextBoxes к значению каждого элемента. Я наконец наткнулся на пример, использующий одну точку или точку для свойства 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 ", как в соответствии с Microsoft :
[...] путь точки (.) Может использоваться для привязки к текущему источнику. Например, Text = "{Binding}" эквивалентно Text = "{Binding Path =.}"
Может ли кто-нибудь пролить свет на это неоднозначное поведение?
РЕДАКТИРОВАТЬ: Более того, кажется, {Binding Path=.}
не обязательно дает двустороннюю привязку, так как изменение текста и перемещение фокуса не обновляет базовый источник (тот же источник имеет также отображаемые свойства и успешно изменен в элементе управления DataGrid). Я определенно что-то здесь упускаю.