WPF TabItem - 图像绑定 - 使用触发器

时间:2017-11-07 19:36:37

标签: wpf binding tabcontrol tabitem

我想在TabControl的标题中显示Image

这个问题(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 个答案:

答案 0 :(得分:1)

  1. 从TabItem.HeaderTemplate到TabItem.Tag的绑定必须通过TabItem类型的FindAncestor。

  2. 在Resources中创建Images,创建BitmapImage,并将它绑定到Image.Source。

  3. 所以,资源:

    Toys    A             B           C            D           E         F  
    ----  -----         -------      ----         ---         ----      ---
    A     10.55,12.60
    B                 7.60,8.90
    C                             8.90,10.50
    D                                         11.50,13.40
    E                                                      17.50,20.30
    F                                                                   2.57,3.50
    

    Header DataTemplate:

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