2016-07-21 3 views
0

wpf TabControl에 멋진 작업을하는 스타일이 있습니다.이 스타일에서는 사용자가 탭 이름을 바꿀 수있는 HeaderTemplate을 설정합니다. 일부 매개 변수를 기반으로 텍스트 색이 서식 파일을 기반으로 스타일을 가지고 있고 일부 조건에 따라 각 탭의 머리글에 다각형을 추가하고 싶습니다.DataTemplate을 확장하여 추가 컨트롤을 포함하는 방법

그래서 기본 스타일의 외모와 같은 :

<Style TargetType="TabItem" x:Key="EditableTabItemStyle" 
     BasedOn="{StaticResource BaseTabItemStyle}"> 
    <Setter Property="HeaderTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <controls:EditableTabContent Template="{StaticResource EditableTabItemTemplate}" 
              Content="{Binding Path=., Mode=TwoWay}"/> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

내 파생 외모와 같은 :

<Style x:Key="DerivedTabItem" 
    BasedOn="{StaticResource EditableTabItemStyle}" 
    TargetType="TabItem"> 
<Setter Property="Foreground"> 
    <Setter.Value> 
    <MultiBinding Converter="{StaticResource StateToColorConverter}"> 
     <Binding Path="States.State1" /> 
     <Binding Path="States.State2" /> 
    </MultiBinding> 
    </Setter.Value> 
</Setter> 

내가없이 바람직하게는, 파생 스타일에 다각형을 추가 할 찾고 있어요 기본 스타일을 전혀 변경하지 않았으므로 머리글 템플릿을 추가하는 것이 처음 생각되었습니다.

<Setter Property="HeaderTemplate"> 
    <Setter.Value> 
     <!-- Old header template --> 
     <!-- Polygon --> 
    </Setter.Value> 
</Setter> 

하지만 편집 가능한 스타일이 우선합니다. 나는 내가 원하는 것을 심지어 할 수 있는지 확신 할 수 없기 때문에 필요하다면 그 대답을 취할 것이지만 그것이 끝나면 어떻게 할 수 있습니까?

답변

0

기존 템플릿을 수정할 수 없습니다.

  • 복사하여 원하는 것을 추가 할 수 있습니다.
  • 특정 조건에서만 표시되는 다른 컨트롤 (예 : DataTrigger 또는 Visibility 속성에 대한 바인딩)을 포함하도록 원래 템플릿을 수정합니다.
    • 이 컨트롤은 모든 유형의 콘텐츠를 일부 자리 표시 자 속성에 바인딩하여 표시 할 수있는 ContentPresenter과 같이 매우 융통성있는 것일 수 있습니다. 템플릿이 매우 단순이 경우,

, 나는 이전에 가고 싶어요.

+0

젠장, 나는 그것을 피하려고 적극적으로 노력하고 있었다. 아무도 똑똑한 일이 있는지 알아보기 위해 며칠을 기다릴 것이지만 그렇지 않다면 대답은 당신 것입니다. –

관련 문제