当前位置:  开发笔记 > 运维 > 正文

如何在ListBox中获得垂直滚动条?

如何解决《如何在ListBox中获得垂直滚动条?》经验,为你挑选了3个好方法。

在下面的例子中,我有一个ListBox,里面有几十个字体名称.

我原以为它会自动在它上面有一个垂直滚动条,这样你就可以选择任何字体,而不仅仅是列表中的第一个字体,但事实并非如此.

所以我添加了一个"ScrollViewer"并在右侧放置了一个"滚动条区域",但滚动条区域中没有滚动条,因此您可以滚动(!).

为什么滚动条不是自动的,如何强制滚动条?


    
        
            
            
        
        
            
        
    

JaredPar.. 138

您的解决方案的问题是您在ListBox周围放置一个滚动条,您可能希望将其放在ListBox中.

如果要在ListBox中强制滚动条,请使用ScrollBar.VerticalScrollBarVisibility附加属性.



将此值设置为"自动"将根据需要弹出滚动条.



1> JaredPar..:

您的解决方案的问题是您在ListBox周围放置一个滚动条,您可能希望将其放在ListBox中.

如果要在ListBox中强制滚动条,请使用ScrollBar.VerticalScrollBarVisibility附加属性.



将此值设置为"自动"将根据需要弹出滚动条.


在我的例子中,我将`ListBox`放在`ScrollViewer`中,并且`ListBoxItems`在`ListBox`的大小之外伸展到他们想要的宽度.删除`ScrollViewer`并设置`ScrollViewer.VerticalScrollBarVisibility ="Visible"`和`ScrollViewer.Horizo​​ntalScrollBarVisibility ="Disabled"`就可以了.谢谢您的帮助!

2> yossharel..:

ListBox已经包含ScrollViewer.默认情况下ScrollBar,当内容多于空格时,将显示.但是一些容器调整自身以适应其内容(例如StackPanel),因此永远不会有"比空间更多的内容".在这种情况下,ListBox总是给予内容所需的空间.

为了计算具有比空间更多的内容的条件,应该知道大小.ListBox通过在ListBox元素本身或主机面板上明确设置大小,确保您具有约束大小.

如果主机面板是垂直的StackPanel,您需要VerticalScrollBar将高度设置为ListBox自身.对于其他类型的容器,例如Grid,ListBox可以由容器约束.例如,您可以将原始代码更改为如下所示:


    
        
            
            
        
        
    

请注意,重要的不仅仅是直接容器.在您的示例中,直接容器是a Grid,但由于它Grid包含在a中StackPanel,因此外部StackPanel会扩展以容纳其直接子项Grid,以便该子项可以扩展以容纳子项(the ListBox).

如果你在任何点限制高度 - 通过设置高度ListBox,通过设置内部的高度Grid,或简单地通过使外部容器a Grid- 然后每当有太多列表项目时自动出现垂直滚动条适合控制.



3> Edward Tangu..:

我在ListBox中添加了一个"Height",它很好地添加了滚动条.


因为它位于StackPanel中,所以它可以快速获得所需的所有空间,因此它不认为*需要*滚动条.
尽量避免使用高度和宽度属性,因为它们可能难以在路上进行更改.你最好选择JaredPar的解决方案.
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有