1. ホーム
  2. wpf

[解決済み] ListBoxに垂直スクロールバーを表示させるには?

2023-02-23 22:42:25

質問

以下の例では、数十のフォント名を持つListBoxを持っています。

リスト内の最初のフォントだけでなく、任意のフォントを選択できるように、自動的に垂直スクロールバーが付くと思ったのですが、そうではありません。

そこで、"ScrollViewer" を追加して、右側に "scrollbar area" を配置しましたが、スクロールできるようにスクロールバーエリアにスクロールバーがありません (!)。

なぜスクロールバーが自動的に表示されないのか、また、強制的にスクロールバーを表示させるにはどうしたらよいのでしょうか。

<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の周りにスクロールバーを入れているです。

ListBox 内に強制的にスクロールバーを表示する場合は、ScrollBar.VerticalScrollBarVisibility 添付プロパティを使用します。

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

この値をAutoに設定すると、必要に応じてスクロールバーがポップアップします。