【问题标题】:How do I move the AvalonDock Anchorable Pane tab to the top instead of the bottom?如何将 AvalonDock Anchorable Pane 选项卡移动到顶部而不是底部?
【发布时间】:2015-04-03 14:48:09
【问题描述】:

我在一个项目中使用 AvalonDock 并希望使用 Anchorable Pane,但我希望它不像在文档窗格中那样出现在底部,而不是出现在底部的选项卡。对于我的项目,Document Pane 不是合适的控件,所以我需要找到一种方法使 Anchorable Pane 以相同的方式出现。

【问题讨论】:

    标签: c# tabs wpftoolkit avalondock placement


    【解决方案1】:

    根据Issue Ticket found on CodePlex,有一个错误会阻止将 TabStripPlacement 更改为顶部。实现这一点的方法是用这样的样式替换现有样式:

    <Style x:Key="MyCustomAnchorablePaneControlStyle" TargetType="{x:Type xcad:LayoutAnchorablePaneControl}">
    
        <Setter Property="TabStripPlacement" Value="Top"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type xcad:LayoutAnchorablePaneControl}">
                    <Grid ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <!--Following border is required to catch mouse events-->
                        <Border Background="Transparent" Grid.RowSpan="2"/>
    
                        <xcad:AnchorablePaneTabPanel x:Name="HeaderPanel" Margin="2,0,2,2" IsItemsHost="true" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/>
    
                        <Border x:Name="ContentPanel" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="0" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="1" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Cycle">
                            <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                        </Border>
    
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style TargetType="{x:Type TabItem}">
                    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
                    <Setter Property="ToolTip" Value="{Binding ToolTip}"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TabControl}}, Path=Items.Count}" Value="1">
                            <Setter Property="Visibility" Value="Collapsed"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Setter.Value>
        </Setter>
    
        <Setter Property="ItemTemplate">
            <Setter.Value>
                <DataTemplate>
                    <xcad:LayoutAnchorableTabItem Model="{Binding}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <xcad:LayoutAnchorableControl Model="{Binding}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    
    </Style>
    

    【讨论】:

    • 如果您在xcad:AnchorablePaneTabPanel 行“2,2,2,0”上设置边距,那么它们看起来会更好。如果没有这种变化,它们看起来就像顶部的底部标签。
    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    相关资源
    最近更新 更多