Ограничения TemplateBinding - PullRequest
4 голосов
/ 22 июня 2011

Пользовательский элемент управления (написанный под VS 2008) имеет свойство зависимости SelectedColor, а его шаблон элемента управления содержит следующее:

...
<Rectangle>
  <Rectangle.Fill>
    <SolidColorBrush Color="{TemplateBinding SelectedColor}"/>
  </Rectangle.Fill>
</Rectangle>
...

Прямоугольник не имеет правильного цвета, если переплет не заменен на:

...
<Rectangle>
  <Rectangle.Fill>
    <SolidColorBrush Color="{Binding SelectedColor, RelativeSource={RelativeSource TemplatedParent}}"/>
  </Rectangle.Fill>
</Rectangle>
...

Хорошо, я знаю, что TemplateBinding - это упрощенная версия Binding, и у нее есть набор ограничений, так каково точное ограничение, которое приводит к тому, что приведенный выше код не работает?

1 Ответ

2 голосов
/ 12 сентября 2011

TemplateBinding очень разные.Думайте о них как о простом присвоении значения при применении шаблона.Поскольку ваш SelectedItem изменяется во время выполнения, вам нужна реальная привязка для уведомления об изменении свойства.

...