重新设计AvalonDock以获得高对比度主题?

时间:2012-04-04 19:28:05

标签: c# wpf styling avalondock high-contrast

我正在项目中使用AvalonDock。为了这个例子,它的结构如下:

<ad:DockingManager>
    <ad:DockablePane>
        <ad:DockableContent Title="Test1">
        </ad:DockableContent>
        <ad:DockableContent Title="Test2">
        </ad:DockableContent>
    </ad:DockablePane>
</ad:DockingManager>

Normal tabs

这很好,但遗憾的是标签在高对比度主题上看起来不太好,如下所示。

High contrast tabs

理想情况下,我想重新设置选项卡以使用系统颜色作为背景(例如窗口颜色)。这可能吗?

谢谢, 艾伦

1 个答案:

答案 0 :(得分:4)

转到codeplex并下载avalon位。在那里,您应该能够快速找到样式的XAML文件。以一个为基线,开始嘲笑它。

你应该看到这样的东西(我只包括一种风格)

<!--DockingManager-->
<Style x:Key="{x:Type ad:DockingManager}" TargetType="{x:Type ad:DockingManager}">
    <Setter Property="Background" Value="{StaticResource DockManagerBackground}"/>
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ad:DockingManager}">
                <Grid Background="{TemplateBinding Background}">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <StackPanel Name="PART_LeftAnchorTabPanel" 
                            Grid.Column="0" Grid.Row="1" Orientation="Vertical">
                        <StackPanel.Resources>
                            <Style TargetType="{x:Type ad:DockablePaneAnchorTabGroup}">
                                <Setter Property="LayoutTransform">
                                    <Setter.Value >
                                        <RotateTransform Angle="90"/>
                                    </Setter.Value>
                                </Setter>
                                <Setter Property="Margin" Value="0,2,2,0"/>
                            </Style>
                            <Style TargetType="Border">
                                <Setter Property="CornerRadius" Value="0,0,3,3"/>
                            </Style>
                        </StackPanel.Resources>
                    </StackPanel>
                    <StackPanel Name="PART_RightAnchorTabPanel" Grid.Column="2" Grid.Row="1"  Orientation="Vertical">
                        <StackPanel.Resources>
                            <Style TargetType="{x:Type ad:DockablePaneAnchorTabGroup}">
                                <Setter Property="LayoutTransform">
                                    <Setter.Value >
                                        <RotateTransform Angle="90"/>
                                    </Setter.Value>
                                </Setter>
                                <Setter Property="Margin" Value="2,2,0,0"/>
                            </Style>
                            <Style TargetType="Border">
                                <Setter Property="CornerRadius" Value="3,3,0,0"/>
                            </Style>
                        </StackPanel.Resources>
                    </StackPanel>
                    <StackPanel Name="PART_TopAnchorTabPanel" Grid.Column="1" Grid.Row="0" Orientation="Horizontal"/>
                    <StackPanel Name="PART_BottomAnchorTabPanel" Grid.Column="1" Grid.Row="2" Orientation="Horizontal"/>
                    <Border 
                        x:Name="PART_InternalContainer"
                        Background="{StaticResource DockManagerBorderBackground}"
                        Grid.Column="1" Grid.Row="1"
                        Padding="2">
                        <ContentPresenter />
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

note that right on top of the file there will be a bunch of brushes, start with them, then start digging dipper