2013-11-11 2 views
0

FindAncestor, я пытаюсь привязать к элементу local: ItemPresenter свойство EndDate. EndDate определяется локально: Presenter. Но это не связывает значение EndDate с элементом.Проблемы с привязкой данных к DataTemplate из шаблона

<Style TargetType="{x:Type local:Presenter}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:Presenter}"> 
       <ItemsControl ItemsSource="{TemplateBinding ItemsSource}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <ContentControl Content="{Binding}"> 
           <ContentControl.Resources> 
            <!-- more Typed DataTemplates --> 
            <DataTemplate DataType="{x:Type item:ItemSubProjects}"> 
             <local:ItemPresenter 
              EndDate="{Binding EndDate, RelativeSource={RelativeSource FindAncestor, AncestorType=local:Presenter}}"> 
             </local:ItemPresenter> 
            </DataTemplate> 
           </ContentControl.Resources> 
          </ContentControl> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Любые идеи?

+0

Вы пропустили режим в RelativeSource связывания '{RelativeSource Mode = FindAncestor, AncestorType = локальная: Presenter}' –

+0

Это не поможет решить эту проблему. – farodin91

+0

И EndDate - это DependencyProperty? –

ответ

0

Явных навести DataContext в привязках могут помочь вам

0

Вам не нужно x:Type привязки здесь вы можете просто передать тип. Кроме того, вы не указали режим относительной привязки источника.

Кроме того, вы можете перенести параметры свойства ItemPresenter в стиль.

Попробуйте это вместо этого.

<Style TargetType="{x:Type local:ItemPresenter"> 
    <Setter Property="EndDate" Value="{Binding EndDate, RelativeSource={RelativeSource FindAncestor, AncestorType=local:Presenter}" /> 
</Style> 
<Style TargetType="{x:Type local:Presenter}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:Presenter}"> 
       <ItemsControl ItemsSource="{TemplateBinding ItemsSource}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <ContentControl Content="{Binding}"> 
           <ContentControl.Resources> 
            <!-- more Typed DataTemplates --> 
            <DataTemplate DataType="{x:Type item:ItemSubProjects}"> 
             <local:ItemPresenter /> 
            </DataTemplate> 
           </ContentControl.Resources> 
          </ContentControl> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

Это не сработало для моего примера, чем я понял это в коде не yaml, и он сработал. – farodin91

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