ツリービューをスクロールできるようにする方法を教えてもらえますか?簡単な方法があるはずですが、コードでそれを機能させることはできません。複数回失敗した後、私は現在次のようなものを持っています:
<ScrollViewer CanContentScroll="True">
<TreeView ...>
</TreeView>
</ScrollViewer>
「無効」スクロールバーが表示されますが、ツリービューのメモが画面の高さよりも大きい場合、スクロールはアクティブになりません。
TreeView
コントロール自体には、テンプレートにScrollViewer
が含まれています。適切なホスト内でTreeView
を使用できるはずです(StackPanel
!ではありません)。
TreeViewにはScrollViewerが含まれていますが、@ Carloが言ったように、TreeViewまたはそのコンテナーには高さが必要です。または、TreeViewは、子に無限の高さを与えないコンテナでホストする必要があります(つまり、@ Kentが意味していたと思うStackPanel)。したがって、グリッド内に配置します。グリッドまたはTreeViewに明示的な高さを指定する必要はなく、スクロールバーを取得する必要があります。
ウィンドウに明示的に設定された高さはありますか?スクロールバーを表示する場合は、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>
TreeViewに固定の高さと幅を与えるだけです。そして多分それを国境に置く。また、アイテムのコンテンツにMaxWidthがあります。たとえば、次は2つのスタックパネルの下のメインウィンドウにあり、機能します(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>
ツリービューの代わりに、エキスパンダーを使用できます。 Scrollviewで適切にスクロールできるものこれはTreeviewと同じように機能します。
高さと幅を一定に設定するだけではどうでしょうか。私はこれがすべての人にとっての答えではないかもしれないことを知っています。