我有一个内置网格的窗口:
<Grid KeyboardNavigation.TabNavigation="Local">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="70" />
<RowDefinition Height="*" />
<RowDefinition Height="25" />
</Grid.RowDefinitions>
<ContentControl Grid.Row="0" Content="{Binding ChildViewModel.View}" />
<DockPanel Grid.Row="1" Visibility="{Binding SearchResultViewVisibility}">
<GridSplitter DockPanel.Dock="Top" Background="LightGray" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Top" IsTabStop="False"/>
<Views:SearchResultView DataContext="{Binding SearchResultViewModel}" />
</DockPanel>
<UserControls:GradientBackgroundControl Grid.Row="2" Height="25">
<Validators:FocusSummaryControl x:Name="FocusSummary" ValidateOnlyFocusedElement="False" />
</UserControls:GradientBackgroundControl>
</Grid>
ContentControl使用此网格集获取UserControl:
<Grid KeyboardNavigation.TabNavigation="Local">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="80" />
<ColumnDefinition Width="80" />
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Row="0" Grid.ColumnSpan="4">
<StackPanel>
...
</StackPanel>
</ScrollViewer>
现在的问题是,UserControl中的ScrollViewer不会滚动。设置为ContentControl的UserControl的内容更高,溢出只是隐藏。
答案 0 :(得分:0)
如果我没有错,StackPanel需要设置高度以使滚动功能起作用,因为StackPanel按设计在一个方向上增长(基于方向)。
要确认这是否是导致问题的原因,请将StackPanel的高度设置为固定高度进行测试。或者,您可能希望将StackPanel替换为DockPanel并查看行为。还有一个ScrollViewer.CanContentScroll属性,您可能想要摆弄它。
让我们知道这次测试的结果。
答案 1 :(得分:0)
我认为你需要重新安排一些事情。我的建议(我确信有无限的变化可行):
首先,在网格中添加一个新行(Height="Auto"
)并将顶行的高度(包含ContentControl
)设置为"*"
<Grid.RowDefinitions>
<RowDefinition Height="*" MinHeight="70" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="25" />
</Grid.RowDefinitions>
其次,将GridSplitter
移出DockPanel。将拆分器放在第1行,将dockpanel放在第2行。
<ContentControl Grid.Row="0" Content="{Binding ChildViewModel.View}" />
<GridSplitter Grid.Row="1" Background="LightGray" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Top" IsTabStop="False" ResizeBehavior="PreviousAndNext"/>
<DockPanel Grid.Row="2" Visibility="{Binding SearchResultViewVisibility}">
<Views:SearchResultView DataContext="{Binding SearchResultViewModel}" />
</DockPanel>
请注意,您可能还需要为GridSplitter设置ResizeBehavior
,如上所示。我希望这能让你接近你想要的东西。