タブコントロール用のスクロール可能なタブを作成したい 質問する

タブコントロール用のスクロール可能なタブを作成したい 質問する

たとえば、タブ コントロールがあり、タブが 50 個以上あるとします。タブをこれだけの数だけ保持するスペースが足りない場合、これらのタブをスクロール可能にするにはどうすればよいでしょうか?

ベストアンサー1

Rick の回答は、実際にはタブコントロール内のコンテンツの垂直方向の伸縮を壊します。StackPanel の代わりに 2 行のグリッドを使用することで、垂直方向の伸縮を維持するように改善できます。

<TabControl.Template>
            <ControlTemplate TargetType="TabControl">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <ScrollViewer HorizontalScrollBarVisibility="Auto"  VerticalScrollBarVisibility="Hidden" >
                        <TabPanel x:Name="HeaderPanel"
                          Panel.ZIndex ="1" 
                          KeyboardNavigation.TabIndex="1"
                          Grid.Column="0"
                          Grid.Row="0"
                          Margin="2,2,2,0"
                          IsItemsHost="true"/>
                    </ScrollViewer>
                    <ContentPresenter x:Name="PART_SelectedContentHost"
                                      SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                      Margin="{TemplateBinding Padding}"
                                      ContentSource="SelectedContent" Grid.Row="1"/>
                </Grid>
            </ControlTemplate>
        </TabControl.Template>

おすすめ記事