2017-11-07 5 views
1

Ich mag Bild zeigen, innerhalb des Titels des Kopfes in TabControlWPF TabItem - Bild Bindung - mit Trigger

Diese Frage (WPF TabItem - Image Binding) scheint richtig ist, aber ich habe mit Trigger und es hilft nicht auf meinem Code. Hier

ist das, was ich habe Providing:

<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> 

Antwort

1
  1. die Bindung von TabItem.HeaderTemplate zum TabItem.Tag über FindAncestor von TabItem Typ sein müssen.

  2. erstellen Sie stattdessen Bilder in Ressourcen, erstellen Sie BitmapImage und binden Sie die Image.Quelle.

so, Ressourcen:

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

Header-Datatemplate:

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