Что означает «{Binding Path =.}» В привязке WPF?

91

Что {Binding Path=.}означает привязка WPF?

Я вижу, как некоторые люди его используют, но не могу найти никакого объяснения.

Есть ли другие специальные символы в синтаксисе привязки (кроме {Binding /})?

Сергей Алдухов
источник

Ответы:

60

Это сокращение для привязки к текущему источнику. Подробнее см. Здесь .

В частности, из документации:

При желании можно использовать путь точки (.) Для привязки к текущему источнику. Например, Text="{Binding}"эквивалентно Text="{Binding Path=.}".

Micahtan
источник
1
@Ray - мои мысли точно. Если вы собираетесь вести стенографию, зачем останавливаться на достигнутом?
micahtan
5
С MSDN не поспоришь, но разница все же есть. {Привязка} не может использоваться с самим объектом (поскольку для него требуется свойство в двух направлениях), в то время как {Путь привязки =.} Работает.
Сергей Алдухов
@Sergey - У вас есть образец кода, в котором {Binding} не работает, а {Binding Path =.} - работает? Если это так, то, вероятно, MSDN необходимо обновить ...
micahtan
Легко: var s = "test; DataContext = s; а в <TextBox Text = {Binding} /> - не работает. Но MSDN - это не вики ...
Сергей Алдухов 01
8
Другой пример: <TextBlock Text = "{Binding Converter = ...}" /> не работает, потому что вам нужно указать путь. В этом случае Path =. является полезным.
Николас
69

Я нашел эту шпаргалку по привязке WPF несколько месяцев назад и считаю ее очень полезной, особенно для тех, кто изучает WPF. В нем есть несколько орфографических ошибок, но все равно неплохо.

Вот небольшой отрывок (который должен иметь табличное форматирование):

Basic Binding   
{Binding}  Bind to current DataContext. 
{Binding Name}  Bind to the “Name” proeprty of the current DataContext. 
{Bindind Name.Length}  Bind to the Length property of the object in the Name property of the current DataContext. 
{Binding ElementName=SomeTextBox, Path=Text}  Bind to the “Text” property of the element XAML element with name=”SomeTextBox” or x:Name=”SomeTextBox”. 

Прямая ссылка на CheatSheet

Райан Версо
источник
2
хороший, но что такое {Binding.}. Я ищу объяснение этому, но не могу его найти?
Эмиль
@batmaci Я хочу сказать, что это эквивалентно {Binding }, но прошло уже довольно много лет с тех пор, как я много работал с Xaml, поэтому я не уверен.
Райан Версо
@batmaci, годы спустя ... {Binding string}похоже на {Binding Path=string}. stringне используется для Pathнепосредственной инициализации свойства , а как параметр для конструктора, Binding (string path)который затем инициализирует Pathсвойство. Это работает только тогда, когда строка является первым токеном после Binding, а остальные являются обычными инициализаторами (пары свойство = значение). Зная это, Binding .фактически равно, Binding Path=.и синтаксис свойства Path доступен здесь .
минут