0

I'm trying to add a ScrollViewer for TabControl but it seems that it's not working... scrollbars aren't even appearing. I need to set them only in the tab area in a way to be resized when window is maximized. Is there someone who can help me on this please?

xaml code:

<StackPanel Orientation="Vertical">
        <GroupBox x:Name="groupBox" Header="GroupBox">
            <Grid>
                <StackPanel Orientation="Horizontal">
                    <Label x:Name="label65" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                    <Label x:Name="label66" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                    <Label x:Name="label67" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                    <Label x:Name="label68" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                    <Label x:Name="label69" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                </StackPanel>
            </Grid>
        </GroupBox>
        <TabControl>
            <TabItem Header="Test" IsEnabled="True">
                <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
                    <StackPanel Orientation="Horizontal" Height="Auto" Width="Auto">
                        <GroupBox x:Name="groupBox1" Header="GroupBox 1">
                            <Grid>
                                <StackPanel Orientation="Vertical">
                                    <Label x:Name="label" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label1" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label2" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label3" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label4" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label5" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label6" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label7" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label8" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label9" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label10" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label50" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label51" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label52" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label53" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label54" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label55" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label56" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label57" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label58" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label59" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label60" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label61" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label62" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label63" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label64" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                </StackPanel>
                            </Grid>
                        </GroupBox>
                        <GroupBox x:Name="groupBox2" Header="GroupBox 2">
                            <Grid>
                                <StackPanel Orientation="Vertical">
                                    <Label x:Name="label11" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label12" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label13" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label14" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label15" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label16" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label17" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label18" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label19" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label20" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label21" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                </StackPanel>
                            </Grid>
                        </GroupBox>
                        <GroupBox x:Name="groupBox3" Header="GroupBox 3">
                            <Grid>
                                <StackPanel Orientation="Vertical">
                                    <Label x:Name="labe22" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label23" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label24" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label25" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label26" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label27" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label28" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label29" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label30" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label31" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label32" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                </StackPanel>
                            </Grid>
                        </GroupBox>
                    </StackPanel>
                </ScrollViewer>
            </TabItem>
        </TabControl>
    </StackPanel>

result minimized:

enter image description here

result maximized:

enter image description here

  • 1
    Does this answer your question? [How can I get ScrollViewer to work inside a StackPanel?](https://stackoverflow.com/questions/802821/how-can-i-get-scrollviewer-to-work-inside-a-stackpanel) – Nawed Nabi Zada Aug 27 '20 at 10:24
  • 1
    Short story, do not use StackPanel when you want ScrollViewer or ScrollBars – Nawed Nabi Zada Aug 27 '20 at 10:24

1 Answers1

0

Scroll viewer's default behaiviour is showing scrollbars when it is needed (HorizontalScrollBarVisibility=Auto, VerticalScrollBarVisibility=Auto). You can change it to visible if you want to show them allways.

Your scrollviewer doesn't shows them because the height of your stackpanel is auto so it's height is definded by the childrens.

You should fix the stackpanels size (dynamicly if needed) to show scroll bars of your scrollviewer.

There is several ways to do this. Here is the code which works for me :

c# side :

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    //On sizechanged event of your window, tabcontrol takes the height of the window - group box which occupies the top side of your screen.
    private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        tcTabs.Height = this.ActualHeight - gbGroup.ActualHeight;
    }
}

And the xaml side :

<Window x:Class="test.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:test"
    mc:Ignorable="d"
    Title="MainWindow" Height="635" Width="856" SizeChanged="Window_SizeChanged">
<Grid>
   
    <StackPanel Orientation="Vertical" Margin="0,0,0,13">
        <GroupBox x:Name="gbGroup" Header="GroupBox">
            <Grid>
                <StackPanel Orientation="Horizontal">
                    <Label x:Name="label65" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                    <Label x:Name="label66" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                    <Label x:Name="label67" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                    <Label x:Name="label68" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                    <Label x:Name="label69" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                </StackPanel>
            </Grid>
        </GroupBox>
        <TabControl x:Name="tcTabs" Height="545">
            <TabItem Header="Test" IsEnabled="True">
                <ScrollViewer x:Name="swScroll" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Margin="0">
                    <StackPanel Orientation="Horizontal" Height="Auto" Width="Auto">
                        <GroupBox x:Name="groupBox1" Header="GroupBox 1">
                            <Grid>
                                <StackPanel Orientation="Vertical">
                                    <Label x:Name="label" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label1" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label2" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label3" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label4" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label5" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label6" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label7" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label8" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label9" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label10" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label50" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label51" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label52" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label53" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label54" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label55" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label56" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label57" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label58" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label59" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label60" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label61" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label62" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label63" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label64" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                </StackPanel>
                            </Grid>
                        </GroupBox>
                        <GroupBox x:Name="groupBox2" Header="GroupBox 2">
                            <Grid>
                                <StackPanel Orientation="Vertical">
                                    <Label x:Name="label11" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label12" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label13" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label14" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label15" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label16" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label17" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label18" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label19" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label20" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label21" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                </StackPanel>
                            </Grid>
                        </GroupBox>
                        <GroupBox x:Name="groupBox3" Header="GroupBox 3">
                            <Grid>
                                <StackPanel Orientation="Vertical">
                                    <Label x:Name="labe22" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label23" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label24" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label25" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label26" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label27" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label28" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label29" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label30" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label31" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                    <Label x:Name="label32" Content="ABCDEFGHIJKLMNOPQRSTUVWXYZ" Margin="10,10,0,0"/>
                                </StackPanel>
                            </Grid>
                        </GroupBox>
                    </StackPanel>
                </ScrollViewer>
            </TabItem>
        </TabControl>
    </StackPanel>
</Grid>
Coskun Ozogul
  • 2,389
  • 1
  • 20
  • 32