2012-12-06 3 views
0

Visual Studio의 코드 및 디자인 탭과 같은 AvalonDock 2.0의 LayoutDocument 하단에 (XAML의) 탭을 어떻게 만들 수 있습니까? (당연히 TabControl을 사용하지 않고)AvalonDock 2.0의 LayoutDocument 하단에 탭을 만드시겠습니까?

위로 가기, 문서 당 하나씩 끝내고 싶지만 각 문서 내에서 하나의 탭으로 여러 개의 "보기"를 가질 수 있어야합니다. 창 하단.

따라서 "page.htm"이 하나의 문서로 표시되어 맨 위에있는 탭에 표시 될 수 있습니다. 그런 다음 "소스"와 "디자인"을 열려 있거나 활성화 된 문서의 하단에있는 두 개의 탭으로 만듭니다.

답변

1

당신은 LayoutDocumentPaneControl의 기본 스타일을 오버라이드해야합니다.이 경우 제공된 테마 중 하나를 살펴 보는 것이 좋습니다. 샘플 코드 (안 테스트) :

<!--MyCustomDocumentPaneControlStyle--> 
<Style x:Key="MyCustomDocumentPaneControlStyle" TargetType="{x:Type avalonDockControls:LayoutDocumentPaneControl}"> 
    <Setter Property="TabStripPlacement" Value="Bottom"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type avalonDockControls:LayoutDocumentPaneControl}"> 
       <Grid ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="*"/> 
         <RowDefinition Height="Auto"/> 
        </Grid.RowDefinitions> 
        <!--Following border is required to catch mouse events--> 
        <Border Background="Transparent" Grid.RowSpan="2"/> 
        <Grid Panel.ZIndex="1" Grid.Row="1"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition/> 
          <ColumnDefinition Width="Auto"/> 
         </Grid.ColumnDefinitions> 
         <avalonDockControls:DocumentPaneTabPanel x:Name="HeaderPanel" Grid.Column="0" IsItemsHost="true" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1"/> 
         <avalonDockControls:DropDownButton 
          x:Name="MenuDropDownButton" 
          Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}" 
          Focusable="False" 
          Grid.Column="1"> 
          <avalonDockControls:DropDownButton.DropDownContextMenu> 
           <avalonDockControls:ContextMenuEx 
            ItemsSource="{Binding Model.ChildrenSorted, RelativeSource={RelativeSource TemplatedParent}}"> 
            <avalonDockControls:ContextMenuEx.ItemContainerStyle> 
             <Style TargetType="{x:Type avalonDockControls:MenuItemEx}" BasedOn="{StaticResource {x:Type MenuItem}}"> 
              <Setter Property="HeaderTemplate" Value="{Binding Path=Root.Manager.DocumentPaneMenuItemHeaderTemplate}"/> 
              <Setter Property="HeaderTemplateSelector" Value="{Binding Path=Root.Manager.DocumentPaneMenuItemHeaderTemplateSelector}"/> 
              <Setter Property="IconTemplate" Value="{Binding Path=Root.Manager.IconContentTemplate}"/> 
              <Setter Property="IconTemplateSelector" Value="{Binding Path=Root.Manager.IconContentTemplateSelector}"/> 
              <Setter Property="Command" Value="{Binding Path=., Converter={StaticResource ActivateCommandLayoutItemFromLayoutModelConverter}}"/> 
             </Style> 
            </avalonDockControls:ContextMenuEx.ItemContainerStyle> 
           </avalonDockControls:ContextMenuEx> 
          </avalonDockControls:DropDownButton.DropDownContextMenu> 
          <Image Source="/AvalonDock;component/Images/PinDocMenu.png"/> 
         </avalonDockControls:DropDownButton>        
        </Grid> 
        <Border x:Name="ContentPanel" 
          VerticalAlignment="Stretch" 
          HorizontalAlignment="Stretch" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          Background="{TemplateBinding Background}" 
          Grid.Column="0" 
          KeyboardNavigation.DirectionalNavigation="Contained" 
          Grid.Row="0" 
          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> 
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Model.ChildrenCount}" Value="0"> 
         <Setter Property="Visibility" Value="Collapsed" TargetName="MenuDropDownButton" /> 
        </DataTrigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="ItemContainerStyle"> 
     <Setter.Value> 
      <Style TargetType="{x:Type TabItem}"> 
       <Setter Property="Visibility" Value="{Binding IsVisible, Converter={StaticResource BoolToVisibilityConverter}}"/> 
       <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/> 
       <Setter Property="ToolTip" Value="{Binding ToolTip}"/> 
      </Style> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="ItemTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <avalonDockControls:LayoutDocumentTabItem Model="{Binding}"/> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 

    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <avalonDockControls:LayoutDocumentControl Model="{Binding}"/> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

새 스타일을 가지고

그냥 DockingManager의 DocumentPaneControlStyle 속성을 사용하여 연결 :

<ad:DockingManager DocumentPaneControlStyle="{StaticResource MyCustomDocumentPaneControlStyle}"> 
... 
</ad:DockingManager> 

아도 답변에 대한

+1

감사합니다. 불행히도 제 질문은 불완전하다고 생각합니다 (업데이트했습니다). 나는보기와 같은 문서의 "내부"에 탭을 추가하는 방법을 찾고있다. DockingManager에 스타일을 적용하여이 작업을 수행 할 수 있다면 문서에서 이러한 뷰를 어떻게 정의 할 수 있습니까? – RickNZ