Включить прокрутку для WPF Treeview - PullRequest
25 голосов
/ 21 августа 2009

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

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

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

Ответы [ 6 ]

37 голосов
/ 21 августа 2009

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

7 голосов
/ 20 июля 2010

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

3 голосов
/ 21 августа 2009

У вас есть высота, явно установленная в вашем окне? Если вы хотите увидеть полосу прокрутки, что-то должно определять высоту 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>
1 голос
/ 30 июня 2016

Это просто вопрос присвоения 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>
0 голосов
/ 06 января 2017

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

0 голосов
/ 16 ноября 2015

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

...