我试图像这样实现一个ScrollViewer;
<Height="auto" Width="auto"
MaxHeight="500" MaxWidth="400"
ResizeMode="NoResize" WindowStyle="None">
<Grid>
<StackPanel>
<ScrollViewer Name="scrlBr">
<StackPanel Orientation="Vertical">
<TextBlock Name ="txtBlock" Margin="10" Height="auto"
Width="auto" TextWrapping="Wrap"></TextBlock>
<Button Name="btnOk" Click="btnOk_Click" Width="80"
HorizontalAlignment="Center">Close!</Button>
</StackPanel>
</ScrollViewer>
<Label HorizontalAlignment="Center" FontSize="3"
Name="lblScrollDown">\/</Label>
</StackPanel>
</Grid>
</Window>我遇到的问题是滚动条看起来是禁用的,而文本显然是从窗口下来的,我看不到btnOk。当然,如果窗口有固定的高度,并且包含在TextBlock和Button中的Scrollviewer比窗口大,那么应该启用ScrollBar,不是吗?
更新
我发现问题在于ScrollViewer在StackPanel中。可以用Grid代替.更新即将到来。
溶液
我认为Stackpanel是个问题,我是对的,并且同意了Heinzi关于使用DockPanel的建议,以及所有的工作都很好。))谢谢!
发布于 2012-06-28 10:08:03
问题是你的StackPanel。它总是占用所需的所有垂直空间,因此ScrollPanel的容器比窗口本身大得多,ScrollViewer认为无需滚动。
解决方案:将StackPanel替换为DockPanel。将<Label>声明移至顶部,并将其停靠到DockPanel的底部。DockPanel中的最后一个子节点(在本例中是ScrollViewer )总是填充剩余的空格:
<Grid>
<DockPanel>
<Label DockPanel.Dock="Bottom" ... Name="lblScrollDown">\/</Label>
<ScrollViewer Name="scrlBr">
...
</ScrollViewer>
</DockPanel>
</Grid> 发布于 2012-06-28 10:17:26
尝试从CanContentScroll中在True上设置ScrollViewer属性,并设置StackPanel的固定高度,因为StackPanel被设计成在一个方向上无限期地增长。或者更好的是,使用不同的面板来堆叠您的项目。
发布于 2012-07-02 11:35:22
也许你需要写些这样的东西
<ScrollViewer Name="scrlBr" VerticalScrollBarVisibility="auto" HorizontalScrollBarVisibility="auto">
...
</ScrollViewer>https://stackoverflow.com/questions/11242263
复制相似问题