2011-10-24 3 views
2

AvalonDock의 VS2010 스타일을 VS2010과 같은 기능으로 만드는 방법을 찾으려고합니다. 내가 겪고있는 문제는 헤더 영역에 들어갈 수있는 것보다 더 많은 탭이있을 때 더 많은 탭이 있음을 사용자에게 알려주지 않는다는 것입니다.AvalonDock 문서 탭 패널의 스타일링 및 편집 문제가 발생했습니다.

탭 머리글이 잘리고 보이지 않는 것으로 생각했습니다. 내가 VS2010 스타일의 사용자 지정 사본을 가지고 있고 DocumentPane 스타일에 갔다 :

<!--DocumentPane--> 
<Style x:Key="{x:Type ad:DocumentPane}" TargetType="{x:Type ad:DocumentPane}"> ... 

을 그리고 "광고 : DocumentTabPanel"로 (내 생각) 탭 헤더를 발견했다.

<ScrollViewer Style="{StaticResource ResourceKey=TabHeaderScrollViewer}" CanContentScroll="True"> 

    <ad:DocumentTabPanel 
     x:Name="paneTabsPanel" 
     Panel.ZIndex ="1" 
     IsItemsHost="True" 
     TabItemStyle="{StaticResource CustomDocumentTabItemStyle}"/> 
</ScrollViewer> 

스크롤 뷰어 그것에 사용자 정의 스타일이하는 설정이다 : 나는 ScrollViewer에이 포장

<Style x:Key="TabHeaderScrollViewer" TargetType="ScrollViewer"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ScrollViewer"> 
       <Grid Background="{TemplateBinding Background}"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto"/> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition Width="Auto"/> 
        </Grid.ColumnDefinitions> 

        <RepeatButton Command="ScrollBar.PageLeftCommand"></RepeatButton> 
        <ScrollContentPresenter Grid.Column="1" 
               x:Name="ScrollContentPresenter" 
               Cursor="{TemplateBinding Cursor}" 
               Margin="{TemplateBinding Padding}" 
               ContentTemplate="{TemplateBinding ContentTemplate}"/> 

         <RepeatButton Grid.Column="2" Command="ScrollBar.PageRightCommand"></RepeatButton> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

오전 데 문제를 그 나는 탭의 톤을로드하는 경우에도 스크롤이 작동하지 않습니다. 나는 이것이 내 스타일에 문제가 있다고 생각하지 않는다. 탭 머리글은 VisualTree에 없거나 축소 된 표시가 나타납니다. 한동안 AvalonDock 소스를 살펴 봤지만 헤더가 숨겨진 것을 볼 수는 없습니다.

추가 속성이 필요했기 때문에 이미 AvalonDock 클래스 중 일부를 서브 클래스 화해야했습니다.

누군가가 설명 할 수 있습니까/탭을 스크롤하는 해결책을 내놓을 수 있습니까?

답변

3

매우 간단하게 문제가 해결되었습니다. HorizontalScrollBarVisibility = "Auto"로 설정해야했습니다. http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.horizontalscrollbarvisibility.aspx을 검사하여이 속성의 기본값이 무엇인지 확인했지만 거기에 표시되지 않거나 ScrollViewer 페이지에 표시되지 않습니다. 나는 그것이 "숨김"으로 기본 설정되어 있다고 가정합니다.

아무튼 "자동"으로 설정되면 탭이 넘칠 때만 반복 버튼이 표시됩니다.