TabControl样式和使用不同的图像

时间:2013-12-05 16:56:12

标签: wpf styles styling tabitem

我希望能够为IsSelected = true和IsSelected = false的不同tabItem设置不同的图像。到目前为止,我有这么多:

<TabControl Margin="60,10,96,18" TabStripPlacement="Left">
        <TabControl.Resources>
            <DataTemplate x:Key="tabItemGeneralHeaderTemplate">
                <StackPanel Orientation="Horizontal" Margin="0,-3,0,0" Height="51" Width="41">
                    <Image Name="tabGeneralImg" Source="C:\Users\myName\Documents\Visual Studio 2013\Projects\NetworkTools\NetworkTools\images\sidebar\homeUnselected.png" Width="41" Height="51"></Image>
                </StackPanel>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding Path=IsSelected,RelativeSource={RelativeSource TemplatedParent}}" Value="True">
                        <Setter TargetName="tabGeneralImg" Property="Source" Value="C:\Users\myName\Documents\Visual Studio 2013\Projects\NetworkTools\NetworkTools\images\sidebar\homeSelected.png"/>
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </TabControl.Resources>
        <TabItem Name="tabItemGeneral" HeaderTemplate="{StaticResource tabItemGeneralHeaderTemplate}">
            <Grid>

            </Grid>
        </TabItem>
        <TabItem Name="tabItemGenera2" HeaderTemplate="{StaticResource tabItemGeneralHeaderTemplate}">
            <Grid>

            </Grid>
        </TabItem>
    </TabControl>

我想知道你是否必须为每个tabItem创建单独的样式,还是有更有效的方法呢?

1 个答案:

答案 0 :(得分:0)

更好的方法是使用两张图片UserControl。将一个图像的可见性绑定为另一个图像的可见性的反转,并将另一个可见性绑定到控件上的布尔值,可以称为ShowDisabled。这样你只需要一个具有正确的正常和禁用图像的'TwinImage'实例,并应用你的风格翻转ShowDisabled并避免重复。