wpf - 如何在列表框中获得垂直滚动条?

标签 wpf xaml listbox scrollviewer

在下面的示例中,我有一个列表框,其中包含数十种字体名称。

我本以为它会自动有一个垂直滚动条,以便您可以选择任何字体,而不仅仅是列表中的第一个字体,但事实并非如此。

所以我添加了一个“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>

最佳答案

您的解决方案的问题是您在列表框周围放置了一个滚动条,您可能希望将其放入列表框内。

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

<ListBox 
    ItemsSource="{Binding}" 
    ScrollViewer.VerticalScrollBarVisibility="Visible">
</ListBox>

将此值设置为“自动”将根据需要弹出滚动条。

关于wpf - 如何在列表框中获得垂直滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472796/

相关文章:

wpf - 如何在 DataBound 控件列表中依次启动 Storyboard

listbox - Excel VBA : Listbox

Silverlight MVVM ListBoxItem IsSelected

sql - 如何在 MS Access 查询中使用两个不同表中的值创建下拉列表(列表框)

wpf - 从数据模板内部绑定(bind)到 View 模型

.net - wpf datagrid rowdetail 被截断

c# - WPF 相当于 Silverlight "RootVisual"

c# - 如何创建带有复选框并绑定(bind)到数据源的 DatagridTemplateColumn?

wpf - 如何在 XAML 中获取 DynamicResource 的属性?

c# - 将 LinearGradientBrush 转换为颜色