启用WPF树视图滚动(Enable scroll for WPF Treeview)

2019-08-02 01:39发布

任何人都可以帮助我如何使一个TreeView滚动? 必须有一个简单的方法,但我不能让它在我的代码工作。 经过多次失败的尝试,我现在有这样的事情:

        <ScrollViewer CanContentScroll="True">
           <TreeView ...>
           </TreeView>
        </ScrollViewer>

我看到一个“禁用”滚动条,但是当树视图的笔记要比屏幕高度大,没有滚动被激活。

Answer 1:

TreeView控件本身包含ScrollViewer在其模板。 你应该能够只使用一个TreeView合适的宿主内(不是StackPanel !)。



Answer 2:

树视图包含的ScrollViewer,但@Carlo说,TreeView的或它的容器需要有一个高度。 另外,TreeView中应以不给其子女给予无限高度的容器托管(即一个StackPanel我认为这是什么@Kent被意)。 所以把它放在一个网格内,没有必要给网格或树视图明确的高度,你应该得到的滚动条。



Answer 3:

你有你的窗口上明确设置的高度? 如果你想看到滚动条的东西必须定义TreeView控件或它的容器的高度,否则将不知道什么时候需要显示滚动条。

例:

<Window x:Class="StackOverflowTests.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" x:Name="window1" Height="300" Width="300">
    <Grid>
        <TreeView  Name="treeView1" Height="150" VerticalAlignment="Top">
            <TreeViewItem Header="Root" IsExpanded="True">
                <TreeViewItem Header="Item 1"></TreeViewItem>
                <TreeViewItem Header="Item 2"></TreeViewItem>
                <TreeViewItem Header="Item 3"></TreeViewItem>
                <TreeViewItem Header="Item 4"></TreeViewItem>
                <TreeViewItem Header="Item 5"></TreeViewItem>
                <TreeViewItem Header="Item 6"></TreeViewItem>
                <TreeViewItem Header="Item 7"></TreeViewItem>
                <TreeViewItem Header="Item 8"></TreeViewItem>
                <TreeViewItem Header="Item 9"></TreeViewItem>
                <TreeViewItem Header="Item 10"></TreeViewItem>
                <TreeViewItem Header="Item 11"></TreeViewItem>
                <TreeViewItem Header="Item 12"></TreeViewItem>
                <TreeViewItem Header="Item 13"></TreeViewItem>
                <TreeViewItem Header="Item 14"></TreeViewItem>
                <TreeViewItem Header="Item 15"></TreeViewItem>
                <TreeViewItem Header="Item 16"></TreeViewItem>
                <TreeViewItem Header="Item 17"></TreeViewItem>
                <TreeViewItem Header="Item 18"></TreeViewItem>
                <TreeViewItem Header="Item 19"></TreeViewItem>
                <TreeViewItem Header="Item 20"></TreeViewItem>
                <TreeViewItem Header="Item 21"></TreeViewItem>
                <TreeViewItem Header="Item 22"></TreeViewItem>
                <TreeViewItem Header="Item 23"></TreeViewItem>
                <TreeViewItem Header="Item 24"></TreeViewItem>
                <TreeViewItem Header="Item 24"></TreeViewItem>
            </TreeViewItem>
        </TreeView>
    </Grid>
</Window>


Answer 4:

这是给予TreeView的固定高度和宽度的简单的事情。 也许把它放在一个边界。 另外,我有我的项目内容的MaxWidth。 例如,下面是我的主窗口下的两个堆叠面板和它的作品(我使用MahApps地铁控制):

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
        <Border BorderThickness="2" BorderBrush="DarkGoldenrod" Margin="4">
        <TreeView x:Name="TreeView" Width="400" Height="800" Focusable="True" VerticalAlignment="Top">
        </TreeView>            
    </Border>
</StackPanel>


Answer 5:

相反树视图可以使用扩展。 它可以scoll带滚动视图正确这项工作同树视图。



Answer 6:

怎么样的高度和宽度只设置以固定的金额? 我知道这可能不是每个人的答案。



文章来源: Enable scroll for WPF Treeview