Search code examples
wpfxamltreeviewstackpanel

Scrollable StackPanel containing 2 TreeView


I got the following xaml code (simplified) :

        <StackPanel Grid.Row="2">
            <TreeView x:Name="a" VerticalAlignment="Stretch" BorderThickness="0">
            [...]
            </TreeView>

            <TreeView Name="b" VerticalAlignment="Stretch" BorderThickness="0">
            [...]
            </TreeView>
        </StackPanel>

My StackPanel is contained in a Grid in a certain Column and in Row 2. The thing is that when one of my TreeView is being too "long" (vertically), I haven't a ScrollBar that appears...

I tried to add the property

CanVerticallyScroll="True"

to the StackPanel but it doesn't change anything...

Any help ?


Solution

  • if you want in both treeviews scrollbars you can do this:

    <Grid Height="100" Width="500">
      <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
      </Grid.RowDefinitions>
    
      <TreeView Grid.Row="0">
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
      </TreeView>
      <TreeView Grid.Row="1">
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
        <TreeViewItem>Test</TreeViewItem>
      </TreeView>
    </Grid>
    

    I think this variant with StackPanel is not a good solution.

    <Grid Height="100" Width="500">
      <StackPanel>
    
        <TreeView Grid.Row="0" MaxHeight="50">
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
        </TreeView>
        <TreeView Grid.Row="1" MaxHeight="50">
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
          <TreeViewItem>Test</TreeViewItem>
        </TreeView>
    
      </StackPanel>
    </Grid>