C# 用户控件内部的WPF Scrollviewer不';不显示垂直滚动条
我使用的是棱镜架构 我有一个如下的结构C# 用户控件内部的WPF Scrollviewer不';不显示垂直滚动条,c#,.net,wpf,silverlight,prism,C#,.net,Wpf,Silverlight,Prism,我使用的是棱镜架构 我有一个如下的结构 <Window Height="300" Width="300"> <Grid> <ItemsControl> <UserControl> <ScrollViewer> <StackPanel> </StackPanel> </ScrollViewer>
<Window Height="300" Width="300">
<Grid>
<ItemsControl>
<UserControl>
<ScrollViewer>
<StackPanel>
</StackPanel>
</ScrollViewer>
</UserControl>
</ItemsControl>
</Grid>
</Window>
水平滚动条显示,但垂直滚动条不显示
请注意,将stackpanel更改为网格(如下所示)并没有帮助
<UserControl>
<ScrollViewer>
<Grid>
<StackPanel>
</StackPanel>
</Grid>
</ScrollViewer>
</UserControl>
StackPanel
无限期增长(即,在明确设置之前,高度不受限制)
使用另一个面板如网格、DockPanel等,或限制StackPanel的固定高度
<ScrollViewer>
<DockPanel>
</DockPanel>
</ScrollViewer>
或
也可以按如下方式约束高度:
<StackPanel Height="{Binding ActualHeight,
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/>
将
ScrollViewer
放在网格中
。这有助于ScrollViewer
使用Grid
中的可用空间,如果内容溢出,它将显示滚动条。这取决于您在哪里使用UserControl
。确保此UserControl
未放置在ScrollViewer
或任何可滚动控件中
<UserControl>
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<StackPanel>
</StackPanel>
</ScrollViewer>
</Grid>
</UserControl>
我使用的是棱柱图案
-棱柱不是图案。为了让滚动条显示,您需要限制滚动查看器
本身的大小,这似乎在这里没有发生。@HighCore是否可以将窗口的高度绑定到滚动查看器?如果是的话,请告诉我怎么做。我不确定你想达到什么目的。再次将StackPanel放置在网格内。大小仍然不受限制。网格内的项目是否会扩展并占用所有可用空间?您可以通过将其绑定到窗口高度来限制StackPanel
高度。请参阅我的答案中的更新。我可以使用viewmodel属性绑定窗口的实际高度吗?某些控件不可见,因此,我必须更改实际高度。您可以将高度绑定到ViewModel属性,但不能将实际高度绑定到ViewModel属性,因为它是readonly属性。我已经尝试过了,但不起作用。滚动条仍然不可见。请确保您的UserControl
未放置在可滚动控件中,并且其对齐方式处于拉伸状态。我已显示了整个xaml。Usercontrol位于根网格中的itemscontrol内部。itemscontrol的ItemsPanel
默认情况下是一个StackPanel
。是否确实要为ItemsControl
中的每个项目设置滚动条?否则,您可以从UserControl
中删除ScrollViewer
,而是将ItemsControl封装在一个控件中。然后,您可以从UserControl
中删除ScrollViewer
。将ItemsControl
包装在ScrollViewer
中,就可以开始了。
<UserControl>
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<StackPanel>
</StackPanel>
</ScrollViewer>
</Grid>
</UserControl>