{TemplateBinding X}
- это просто сокращенный способ написания {Binding X, RelativeSource={RelativeSource TemplatedParent}}
.
Они оценивают одно и то же, хотя TemplateBinding
оценивается во время компиляции, а RelativeSource TemplatedParent
оценивается во время выполнения.
Поскольку он вычисляется во время компиляции, TemplateBinding
вычисляется немного быстрее, однако он выдаст ошибки, если не будет считать, что свойство привязки существует. Если вы знаете, что свойство существует, но компилятор не знает о нем, тогда вы используете RelativeSource TemplatedParent
, поскольку оно оценивается во время выполнения, а не во время компиляции.
Чтобы подвести итог, используйте TemplateBinding
, если это не дает вам ошибку, и вы не знаете, что свойство существует. Тогда используйте RelativeSource TemplatedParent
Принятый ответ на вопрос, который вы связали , содержит довольно хорошее обобщение различий между двумя