这是我的代码:
<ScrollViewer Grid.Row="2" CanContentScroll="True">
<DockPanel>
<TreeView x:Name="tView" DockPanel.Dock="Top" VerticalAlignment="Stretch">
[...]
</TreeView>
<TreeView Name="pluginsView" DockPanel.Dock="Top" VerticalAlignment="Stretch">
[...]
</TreeView>
</DockPanel>
</ScrollViewer>
我必须定义2个TreeViews。有相同的“区域”(平均相同的[行,列])所以我不得不使用Panel。我使用了StackPanel,但显示器不是我想要的。 我使用ScrollViewer,以便当它们不垂直适合“区域”的空间时,我得到2个TreeViews的通用滚动条。
我遇到的问题是横向问题。当我的2个TreeView中的一个太“大”时,我得到了一个滚动条,但是只有TreeView太大了,所以当我滚动时,只有一个TreeView水平移动。我想要的是当我滚动时,我的两个TreeView都水平移动。
我不知道它是否足够清楚,如果不清楚我可以上传截图!
我也尝试过这段代码,但它也不起作用:
<ScrollViewer Grid.Row="2" CanContentScroll="True">
<Grid Grid.Row="2">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TreeView Grid.Row="0" x:Name="tView" DockPanel.Dock="Top" VerticalAlignment="Stretch">
[...]
</TreeView>
<TreeView Grid.Row="1" Name="pluginsView" DockPanel.Dock="Top" VerticalAlignment="Stretch">
[...]
</TreeView>
</DockPanel>
</ScrollViewer>
但我得到了同样的问题.. :(
答案 0 :(得分:6)
听起来好像是使用TreeView的内部ScrollViewer
滚动内容,而不是外部ScrollViewer
。
通常这是因为ScrollViewer
内的内容在某种程度上受到限制,因此请确保您不以任何方式限制TreeView
或其父级面板的大小。这包括将Vertical / Horizonal Aligment设置为Stretch。
这是一个可以在两个方向上平滑滚动的示例。我有点惊讶于我必须在HorizontalScrollBarVisibility
标记中设置<ScrollViewer>
以显示水平滚动条。
<Border BorderBrush="Black" BorderThickness="2" Height="100" Width="100">
<ScrollViewer CanContentScroll="True"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<DockPanel>
<Rectangle Height="75" Width="150" Fill="Red" DockPanel.Dock="Top" />
<Rectangle Height="75" Width="150" Fill="Blue" />
</DockPanel>
</ScrollViewer>
</Border>
答案 1 :(得分:0)
尝试禁用树的水平ScrollViewer
。这样包装ScrollViewer
将需要打开。
<强> XAML:强>
<ScrollViewer Grid.Row="2" CanContentScroll="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TreeView Grid.Row="0" x:Name="tView" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
[...]
</TreeView>
<TreeView Grid.Row="1" Name="pluginsView" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
[...]
</TreeView>
</Grid>
</ScrollViewer>
答案 2 :(得分:0)
经过数小时的测试,这对我有用:
<ScrollViewer Grid.Row="2" HorizontalScrollBarVisibility="Auto">
<DockPanel ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<TreeView x:Name="tView" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
[...]
</TreeView>
<TreeView Name="pluginsView" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
[...]
</TreeView>
</DockPanel>
</ScrollViewer>
为此,您必须禁用TreeViews和网格的可见性,并且您必须在ScrollViewer上使用HorizontalScrollBarVisibility =“Auto”!