Подтвердить что ты не робот

Включить прокрутку для WPF Treeview

Может кто-нибудь помочь мне в том, как включить прокрутку дерева? Должен быть простой способ, но я не могу заставить его работать в моем коде. После нескольких неудачных попыток у меня в настоящее время есть что-то вроде этого:

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

Я вижу "пропущенную" полосу прокрутки, но когда ноты дерева больше высоты экрана, никакая прокрутка не активируется.

4b9b3361

Ответ 1

Сам элемент TreeView включает ScrollViewer в свой шаблон. Вы должны просто использовать TreeView внутри соответствующего хоста (а не StackPanel!).

Ответ 2

TreeView содержит ScrollViewer, но, как сказал @Carlo, TreeView или его контейнер должны иметь высоту. Альтернативно, TreeView должен размещаться в контейнере, который не дает бесконечной высоты его дочерним элементам (т.е. StackPanel, который, как мне кажется, означает значение @Kent). Поэтому поместите его внутри сетки, не нужно давать сетке или TreeView явную высоту, и вы должны получить полосы прокрутки.

Ответ 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>

Ответ 4

Вместо Tree View вы можете использовать Expander. Который может scoll С просмотром прокрутки правильно это работает так же, как Treeview.

Ответ 5

Это просто вопрос предоставления TreeView фиксированной высоты и ширины. И, может быть, поставить его на границе. Кроме того, у меня есть содержимое MaxWidth на моих элементах. Например, следующее в моем главном окне под двумя панелями стека и работает (я использую элементы управления MahApps Metro):

<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>

Ответ 6

Как просто установить высоту и ширину на фиксированную сумму? Я знаю, что это не может быть ответом для всех.