尝试WPF Tab标题,需要进行3次调整

时间:2011-12-21 12:20:40

标签: c# wpf wpf-controls

我想改变一些WPF标签标题的样式。我想保留标签标题的所有原始样式,除了这三件事 -

  1. 增加标题的高度
  2. 使每个标题的高度相同。通常,所选标签的高度较大,我需要选定和未选定标签的高度相同。
  3. 在每个标题上的文字上方添加图片
  4. 这是我想要做的前后图像 -

    WPF Tab Headers

    任何人都知道怎么做?

1 个答案:

答案 0 :(得分:3)

你去了,你可以用漂亮的图像替换Stack面板。

更新1-以便在选择标签时删除大小调整效果,您需要更改TabItem样式(标题模板太亮了)。得到一个StyleSnooper(http://blog.wpfwonderland.com/2007/01/02/wpf-tools-stylesnooper/)用VS2010打开它,重新编译.NET4,启动,导航到TabItem并搜索:


<Setter Property="FrameworkElement.Margin">
                                        <Setter.Value>
                                            <Thickness>
                                                2,2,2,2</Thickness>
                                        </Setter.Value>
                                    </Setter>
                                    <Setter Property="FrameworkElement.Margin" TargetName="Content">
                                        <Setter.Value>
                                            <Thickness>
                                                2,2,2,2</Thickness>
                                        </Setter.Value>

边距是您想要更改以修复2的值。然后只需将修改后的版本放入资源中,以便应用程序可以将其选中。该风格包含许多你可以调整的方便的东西。


<Window x:Class="Immutables.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>

        <TabControl TabStripPlacement="Left" x:Name="AreasTabControl" Margin="1">
            <TabItem x:Name="AttributesTab">
                <TabItem.HeaderTemplate>
                    <DataTemplate>
                        <Grid Width="100" Height="40">

                            <Border BorderThickness="1" BorderBrush="Gray" HorizontalAlignment="Left" VerticalAlignment="Top">
                                <StackPanel Orientation="Horizontal">
                                    <Rectangle VerticalAlignment="Top"
                                Width="5" Height="5" Fill="White" />
                                    <Rectangle  VerticalAlignment="Top"
                                Width="5" Height="5" Fill="Blue" />
                                    <Rectangle VerticalAlignment="Top"
                                Width="5" Height="5" Fill="Red" />
                                </StackPanel>
                            </Border>


                            <TextBlock Margin="0,20,0,0">Go Russia!</TextBlock>
                        </Grid>
                    </DataTemplate>
                </TabItem.HeaderTemplate>

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