2017-11-07 4 views
1

를 사용WPF TabItem의 - 이미지 바인딩 - 내가있는 TabControl에서 헤더의 제목의 내부 이미지를 보여주고 싶은 트리거

(WPF TabItem - Image Binding)이 보인다이 질문은 바로,하지만 난이 트리거를 사용하고이에 도움이되지 않습니다 내 암호. 여기

내가 제공 한 것입니다 :

<TabControl Name="MainTabControl" Margin="0,28,0,0" TabStripPlacement="Top" > 
      <TabControl.Resources> 
<Image x:Key="imgProfile" Source="/Icons/red icons/profile.png" /> 
<Image x:Key="imgComment" Source="Icons/red icons/notification.png" /> 

       <Style TargetType="TabItem" > 
        <Setter Property="HeaderTemplate"> 
         <Setter.Value> 
          <DataTemplate> 
           <WrapPanel> 
            <TextBlock Text="{Binding}" 
          MouseDown="UIElement_OnMouseDown" 
           FontSize="18"  
          /> 
            <Image Height="25" Margin="4,0,4,0" 
    Source="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Tag.Source}" /> 
           </WrapPanel> 
          </DataTemplate> 
         </Setter.Value> 
        </Setter> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="TabItem"> 
           <Border Name="Border" BorderThickness="1,1,1,0" BorderBrush="Gainsboro" CornerRadius="0" Margin="2,0"> 
            <ContentPresenter x:Name="ContentSite" 
             VerticalAlignment="Center" 
             HorizontalAlignment="Center" 
             ContentSource="Header" 
             Margin="5,2"/> 
           </Border> 
           <ControlTemplate.Triggers> 
            <Trigger Property="IsSelected" Value="False"> 
             <Setter TargetName="Border" Property="BorderBrush" Value="Transparent" /> 
             <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
             <Setter Property="Foreground" Value="{DynamicResource TabItemNormal}"/> 

            </Trigger> 
           </ControlTemplate.Triggers> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </TabControl.Resources> 

<TabItem Name="tiProfile" Header="a" Tag="{StaticResource imgProfile}"></TabItem> 
<TabItem Name="tiComment" Header="b" Tag="{StaticResource imgComment}"></TabItem> 
</TabControl> 

답변

1
  1. 가 TabItem의 유형의 FindAncestor를 통해 수 있어야 TabItem.Tag에 TabItem.HeaderTemplate 바인딩.

  2. 대신 리소스에서 이미지를 만들고 BitmapImage를 만들고 Image.Source를 바인딩하십시오.

그래서, 자료 :

<BitmapImage x:Key="imgProfile" Source="/Icons/red icons/profile.png" /> 
<BitmapImage x:Key="imgComment" Source="Icons/red icons/notification.png" /> 

헤더 DataTemplate을 :

<Image Height="25" Margin="4,0,4,0" 
     Source="{Binding Tag, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}}" /> 
관련 문제