經過一番實驗,這個答案變得非常明顯。
指定高度 ScrollViewer的屬性是缺失的部分,它使所有的工作都像預期的那樣工作。
<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的高度是我發現的唯一方法,使所有的一切按預期工作。