我试图像这样实现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
并且所有的工作都很好。 :)谢谢!
答案 0 :(得分:2)
问题在于你StackPanel
。它总是需要它所需的所有垂直空间,因此ScrollPanel的容器比窗口本身大得多,并且ScrollViewer看不到需要滚动。
解决方案:将StackPanel
替换为DockPanel
。将<Label>
声明移到顶部并将其停靠在DockPanel的底部。 DockPanel中的最后一个子节点(在这种情况下是ScrollViewer
)总是填充剩余空间:
<Grid>
<DockPanel>
<Label DockPanel.Dock="Bottom" ... Name="lblScrollDown">\/</Label>
<ScrollViewer Name="scrlBr">
...
</ScrollViewer>
</DockPanel>
</Grid>
答案 1 :(得分:0)
尝试从ScrollViewer设置CanContentScroll
True
属性并设置StackPanel的固定高度,因为StackPanel设计为在一个方向上无限增长。或者更好的是,使用不同的面板来堆叠您的物品。
答案 2 :(得分:0)
也许你需要写这样的东西
<ScrollViewer Name="scrlBr" VerticalScrollBarVisibility="auto" HorizontalScrollBarVisibility="auto">
...
</ScrollViewer>