2009-09-07 3 views
4

Windows Forms에서 TabControl의 기본 동작은 너무 많은 공간을 소비하는 경우 탭을 스크롤 가능 영역으로 흘려 보내는 것입니다 (MultiLine = false).Windows Form에서 MultiLine = false (기본값)로 나타나는 것처럼 WPF TabControl을 표시하려면 어떻게합니까?

WPF에서이 동작을 수행하는 가장 좋은 방법은 무엇입니까?

UPDATE

내가 TabControl.ItemsPanel를 사용하여 해결책을 찾기 위해 노력했다지만 마음은 내가 이런 이유로 내가 어려운 길을 갔어요 및 TabControl.Template 시작 완전히 그래서,이 무시됩니다 넣어 아무것도 보인다 우리가 올바른 접근 방법으로 밝혀지면이 방법으로해야한다는 것을 우스꽝스럽게 생각합니다.

문제를 완전히 해결하지 못했지만 다음과 같이 시작되었습니다.

<TabControl> 
    <TabControl.Template> 
    <ControlTemplate TargetType="{x:Type TabControl}"> 
     <DockPanel> 
     <ScrollViewer DockPanel.Dock="Top" 
         HorizontalScrollBarVisibility="Auto" 
         VerticalScrollBarVisibility="Disabled"> 
      <StackPanel Orientation="Horizontal" IsItemsHost="True" /> 
     </ScrollViewer> 
     <ContentPresenter ContentSource="SelectedContent" /> 
     </DockPanel> 
    </ControlTemplate> 
    </TabControl.Template> 
    <TabItem Header="One">First</TabItem> 
    <TabItem Header="Two">Second</TabItem> 
    <TabItem Header="Three">Third</TabItem> 
    <TabItem Header="Four">Fourth</TabItem> 
    <TabItem Header="Five">Fifth</TabItem> 
</TabControl> 

답변

0

가장 쉬운 옵션은 TabControl에서 ItemsPanelTemplate을 설정하는 것입니다. 기본적으로 WrapPanel, 따라서 다중 행 동작이라고 생각합니다. 예를 들어 StackPanel로 변경하고 ScrollViewer를 추가 할 수 있습니다. 템플릿을 대체하는 약간의 도움 (단지 VS없이 코딩)이 같은

뭔가

<TabControl> 
    <TabControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Horizontal"/> 
    </ItemsPanelTemplate> 
    </TabControl.ItemsPanel> 
</TabControl> 

희망 ...

+0

안녕하세요, 이것은 제가 취하고있는 것과 거의 같은 접근법입니다. 템플릿에 넣은 것이 아무것도 없지만 여전히 동일하게 나오므로 지금은 전체를 바꾸기로 결정했습니다. TabControl 템플릿, 이것은 내가 의도 한 것이 아니며 ItemsPanelTemplate을 사용하는 좀 더 쉬운 솔루션 일 수도 있습니다. 나는 지금까지 시도해온 것을 몇 초 안에 게시 할 것이다. –

0

내가 몇 년 전 같은 문제를 겪고을 내 솔루션은 헤더의 크기를 제한 였고, 그것을 포함하는 패널, 물론 당신이 시작한 것과 같은 자신의 템플릿을 만들어야하고 또한 스크롤 뷰어의 왼쪽과 오른쪽에 두 개의 반복 버튼을 넣어 몇 가지 스크롤 지원을 구현해야합니다.

내 영감은 wpf의 IE 탭이라는 코드 프로젝트의 멋진 프로젝트였습니다. 는 WPF 오래된 그리고 탭이 왼쪽을 따라 수직으로 적층 된있는 TabControl을 위해 노력에서 좋은

0

나는이 글이 오래된 글임을 알고 있지만, 다른 사람들이 인터넷에서 이것을 검색해야한다면 다른 아이디어를 추가하고 싶다.

tabpanel의 너비를 더 크게 설정하면 사용자가 다른 탭을 계속 추가 할 수있는 tabpanel이 아니라고 가정합니다. 사용자가 탭 패널에 새 탭을 추가하게하려면 스크롤 막대를 추가해야합니다.