2013-08-29 2 views
0

Я разрабатываю пользовательский элемент управления, полученный из ItemsControl. В Generic.xaml-файле я создал стиль для этого элемента управления, а также определил ItemTemplate:Как привязываться к TemplatedParent из DataTemplate, определенному в стиле?

<Style TargetType="local:MyItemsControl"> 
    <Setter Property="ItemTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Border Background="Red"> 
        <!-- Other things in here --> 
       </Border> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Я хочу, чтобы связать Background свойства Border в DataTemplate к свойству зависимостей от MyItemsControl.

Если у вас возникли вопросы, предлагающие использовать имя элемента MyItemsControl в привязке, но это работает только при определении ItemTemplate, где используется элемент управления. Я также попытался привязать к RelativeSource, определяя local:MyItemsControl как тип предка.

Ничего не работало. Что мне здесь не хватает?

+0

В «ControlTemplate» вы можете использовать TemplateBinding. Но это доступно только в 'ControlTemplate' ... Я бы попробовал путь предка. – MVCible

+0

Я пробовал это - но не смог заставить его работать. Так что либо это не сработает - или я допустил ошибку ... – Spontifixus

ответ

3

Какой тип DependencyProperty? Это Brush или string? Этот простой код работает для меня:

Background="{Binding Name, RelativeSource={RelativeSource AncestorType=ItemsControl}}" 

Просто для теста здесь я связываю к свойству Name ItemsControl, который «Желтый» - и это работает.