2016-03-17 3 views
0

Указание шаблона родителя как источника привязки в шаблоном управлении кажется общим, но раздражающе подробным. Есть ли короткий способ сделать это?Есть ли сокращение для RelativeSource = {RelativeSource Mode = TemplatedParent}?

Какой-то префикс на пути будет казаться более разумным. например

{Binding ^Title} 

или что-то подобное, вместо

{Binding Title, RelativeSource={RelativeSource Mode=TemplatedParent}} 

ответ

2

Вы можете использовать TemplateBinding:

{TemplateBinding Title} 

Заметим, однако, что

типы используются в качестве значения свойство источника и цель свойство должно совпадать. Когда вы используете TemplateBinding, нет возможности ввести конвертер . В случае несоответствия значениям возникает ошибка при анализе XAML. Если вам нужен конвертер можно использовать подробного синтаксиса шаблона связывания, такие как: {Binding RelativeSource={RelativeSource TemplatedParent}, Converter="..." ...}

и, вероятно, более важно, второе предложение здесь:

TemplateBinding всегда один- . Оба свойства должны быть зависимыми.

+0

Вы бы так подумали, не так ли? Пробовал, но я получаю исключение по строкам «Свойство Title, не найденное на объекте класса Thing». Но у этого очень есть это свойство. – terriblememory

+0

«Оба задействованных свойства должны быть зависимыми свойствами». Вероятно, это так. Цель - свойство Text для TextBlock, которое не является свойством зависимостей. – terriblememory

+0

Спасибо, что выяснил, почему TemplateBinding не работает для меня. Мне нужно научиться читать документы более тщательно ... Я думаю, это на самом деле не отвечало на мой первоначальный вопрос, хотя, например, есть сокращенный эквивалент расширенной регулярной разметки {Binding}. Я думаю, что ответ «Нет»! – terriblememory

Смежные вопросы