2012-06-17 1 views
2

나는 두 개의 서로 다른 잠재적 항목 템플릿을 사용하여 탭 컨트롤이 : 이제탭 항목 템플릿에 따라 탭 스타일이 다릅니 까?

<TabControl ItemTemplateSelector="{StaticResource tabTemplateSelector}"/> 

을, 나는 또한 스타일을 가지고 :

<Style TargetType="{x:Type TabItem}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TabItem}"> 
       ... 
는 것은이

, 내가 할 탭 항목 스타일 템플릿을 원하는 ItemTemplateSelector의 값에 따라 다릅니다. 어떻게해야합니까? 기본적으로 전체 스타일 규칙을 특정 탭 항목 템플리트가있는 탭 항목에만 적용하기를 원하지 않습니다.

업데이트 : 업데이트 : TargetTypeTabItem으로 설정되어 있습니다. 특정 항목 템플릿이있는 탭 항목에만 해당 스타일을 적용하고 싶습니다.

답변

1

ControlTemplateContentPresenter에는 ItemTemplate의 내용이 표시됩니다. 따라서 ControlTemplate 내부에서 Template을 전환 할 수 없습니다.

대신 DataTrigger을 사용하여 Template을 설정할 수 있습니다. DataTrigger은 생성 될 ItemTemplate에 다른 Template이 있어야하는지 확인합니다.

아마 변환기가 필요 하겠지만 여기에는 쉬운 예가 있습니다. Name이 "탭 2"와 동일한 경우 ItemTemplateSelector이 다른 DataTemplate을 반환한다고 가정 해보십시오. 그런 다음 DataTriggerStyle은 다음과 같이 표시됩니다.

<Style TargetType="TabItem"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="TabItem"> 
       <!-- Your first Template --> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Name}" Value="Tab 2"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="TabItem"> 
         <!-- Your other Template --> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
관련 문제