在下面的例子中,我有一个ListBox,里面有几十个字体名称.
我原以为它会自动在它上面有一个垂直滚动条,这样你就可以选择任何字体,而不仅仅是列表中的第一个字体,但事实并非如此.
所以我添加了一个"ScrollViewer"并在右侧放置了一个"滚动条区域",但滚动条区域中没有滚动条,因此您可以滚动(!).
为什么滚动条不是自动的,如何强制滚动条?
JaredPar.. 138
您的解决方案的问题是您在ListBox周围放置一个滚动条,您可能希望将其放在ListBox中.
如果要在ListBox中强制滚动条,请使用ScrollBar.VerticalScrollBarVisibility附加属性.
将此值设置为"自动"将根据需要弹出滚动条.
您的解决方案的问题是您在ListBox周围放置一个滚动条,您可能希望将其放在ListBox中.
如果要在ListBox中强制滚动条,请使用ScrollBar.VerticalScrollBarVisibility附加属性.
将此值设置为"自动"将根据需要弹出滚动条.
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
- 然后每当有太多列表项目时自动出现垂直滚动条适合控制.
我在ListBox中添加了一个"Height",它很好地添加了滚动条.