我怎样才能得到我的列表框垂直滚动条?
-
19-08-2019 - |
题
在下面的例子中我有几十个的字体名称在它的列表框。
我还以为它会自动在其上具有垂直滚动条,让您可以选择任何字体,不仅在列表中的第一批,但事实并非如此。
所以我加了一个“ScrollViewer中”,并且提出了“滚动区域”上的权利,但没有滚动条的滚动区域,以便您可以滚动(!)。
和为什么不自动滚动条我怎么用力它有一个滚动条?
<StackPanel Name="stack1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<ScrollViewer>
<ListBox Grid.Row="0" Name="lstFonts" Margin="3" ItemsSource="{x:Static Fonts.SystemFontFamilies}"/>
</ScrollViewer>
</Grid>
</StackPanel>
解决方案
您的解决方案的问题是你把周围一个列表框的滚动条,你可能想要把它列表框里面。
如果要强制滚动条在列表框,使用ScrollBar.VerticalScrollBarVisibility附加属性。
<ListBox
ItemsSource="{Binding}"
ScrollViewer.VerticalScrollBarVisibility="Visible">
</ListBox>
将此值设置为自动弹出上在需要的基础滚动条。
其他提示
ListBox
已经包含ScrollViewer
。默认情况下,ScrollBar
会显示出来时,有比空间更多的内容。但某些容器调整自身大小以适应其内容(例如StackPanel
),所以从来没有“比空间更多的内容。”在这种情况下,ListBox
总是给出尽可能多的空间,需要对内容。
为了计算具有比空间更多的内容的情况下,大小应该是已知的。确保您的ListBox
有约束的大小,或者由ListBox
元素本身,还是从主机面板上明确设置大小。
在情况下,主机面板是垂直StackPanel
和要VerticalScrollBar
必须设置高度上ListBox
本身。对于其它类型的容器,例如Grid
,所述ListBox
可以由容器的限制。例如,你可以改变你原来的代码看起来像这样:
<Grid Name="grid1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<ListBox Grid.Row="0" Name="lstFonts" Margin="3"
ItemsSource="{x:Static Fonts.SystemFontFamilies}"/>
</Grid>
</Grid>
请注意,这不只是眼前的容器是非常重要的。在实施例中,直接容器是一个Grid
,而是因为Grid
由StackPanel
包含的,所述外StackPanel
被扩展,以容纳其直接子Grid
,使得儿童可扩展以容纳其子(该ListBox
)。
如果您约束在任何点的高度 - ,或简单地通过使外容器ListBox
通过设置Grid
的高度,通过设定内Grid
的高度 - 然后垂直滚动条会自动出现任何时候有太多的列表项,以适应控制。
我添加了“高度”我的列表框和它很好地添加滚动条。
除非其可见性设置为隐藏的滚动条被自动添加到列表框。每当列表项的大小超过一个,其可以在列表框可以在运行时间期间可以看到垂直或水平列表框内被显示。
在我的情况,所以我不想使用Height属性ListBox中的项目的数量是动态的。我用MaxHeight而不是和它工作得很好。当它填补了我分配给它的空间,显示滚动条。
我有同样的问题,我有一个组合框,随后在一个StackPanel列表框和用于列表框滚动条并没有显示出来。我通过投入DockPanel中两个,而不是解决了这个。余设置的组合框DockPanel.Dock =“顶部”和让列表框填充剩余的空间。
<强> XAML列表框滚轮 - 视窗10(UWP)强>
<Style TargetType="ListBox">
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Visible"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Visible"/>
</Style>