2015-04-03 12 views
5

Я использую AvalonDock в проекте и хотел бы использовать Anchorable Pane, но вместо вкладки, появляющейся внизу, я хотел бы, чтобы она отображалась вверху, как на панели документов. Для моего проекта панель документов не является подходящим элементом управления, поэтому мне нужно найти способ сделать Anchorable Pane одинаковым.Как перенести вкладку AvalonDock Anchorable Pane сверху, а не внизу?

enter image description here

ответ

2

По 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> 
+1

если вы делаете запас на 'xcad: AnchorablePaneTabPanel' линии«2,2,2,0», то они выглядят лучше. Без этого изменения они выглядят как нижние вкладки сверху. – zaknotzach

Смежные вопросы