Ответ 1
Краткий ответ: {Binding}
не является ярлыком для "привязки к себе" (в смысле RelativeSource.Self). Скорее, {Binding}
эквивалентен {Binding Path=.}
, который привязывается к текущему источнику.
Чтобы уточнить: у привязки есть источник и путь. Вы можете сделать "привязку к себе", например, с помощью
<myUIControl myProperty="{Binding RelativeSource={RelativeSource Self}, Path=x}" />
Однако это устанавливает источник для самого элемента управления, поэтому он попытается получить доступ к свойству x
элемента управления пользовательского интерфейса (а не к свойству x
текущего контекста данных). Из того, как я понял твой вопрос, это не то, что ты хочешь; в частности, это не то, что делает {Binding}
: {Binding}
сохраняет источник таким, какой он есть (обычно DataContext
некоторого родительского элемента) и привязывается к самому источнику (эквивалентно Path=.
).