经过一些实验,这个问题的答案变得非常明显。
为 ScrollViewer指定Height属性是使一切按预期工作的缺失部分。
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"
Height="350"> <!-- THIS was the missing piece!! -->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Controls:TreeView Grid.Row="0" ItemsSource="{Binding ListOne}"
ItemTemplate="{StaticResource ListOneTemplate}" >
</Controls:TreeView>
<Controls:TreeView Grid.Row="1" ItemsSource="{Binding ListTwo}"
ItemTemplate="{StaticResource ListTwoTemplate}" >
</Controls:TreeView>
</Grid>
</ScrollViewer>
FWIW,我尝试了许多其他解决方案,包括为 Grid、GridRows 和 TreeView 设置高度和最大高度。我还尝试创建一个事件以在网格高度更改时设置滚动查看器的高度,并在树视图项更改时触发级联 UpdateLayouts() 的事件。
在 ScrollViewer 上设置高度是我发现使一切按预期工作的唯一方法。