StackpanelにScrollBarを追加する方法


106

私のWPFアプリケーションには、いくつかのコントロールを含むStackpanelがあります。このスタックパネルにスクロールバーを追加するにはどうすればよいですか。

回答:


162

に入れてくださいScrollViewer


ありがとう。ScrollViewerを配置した後、コンテンツ全体が表示されません。HeightとWidthをAutoに設定してみましたが、うまくいきませんでした。限られた部分だけを表示する必要があるのはなぜですか?
Shamim Hafiz

5
私は見当もつかない。あなたの質問は2文長で、潜在的な問題を予測するために少し詳細です。
Joey

了解しました。開始タグを間違った場所に配置していました。助けてくれてありがとう。
Shamim Hafiz

シンプルで完璧な答え。
David Piao

94

Stackpanelには組み込みのスクロールメカニズムはありませんが、StackPanelは常にScrollViewerでラップできます。

<ScrollViewer VerticalScrollBarVisibility="Auto">
  <StackPanel ... />
</ScrollViewer>

3
まあ、多くのスクロール関連のメソッドをStackPanel実装IScrollInfoして提供しています。「組み込み」のスクロールメカニズムがないことを確認してください。
またはMapper 2013

4
msdn.microsoft.com/en-us/library/... ...「このプロパティは、あなたのコード内で使用するためのものではありません。インターフェイス契約(IScrollInfo)を満たすために一般に公開されています。このプロパティを設定しても効果はありません。もし論理スクロールではなく物理スクロールが必要な場合は、StackPanelをScrollViewerでラップし、そのCanContentScrollプロパティをfalseに設定します。
スキナー2017

11

それはこのように動作します:

<ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Disabled" Width="340" HorizontalAlignment="Left" Margin="12,0,0,0">
        <StackPanel Name="stackPanel1" Width="311">

        </StackPanel>
</ScrollViewer>

TextBox tb = new TextBox();
tb.TextChanged += new TextChangedEventHandler(TextBox_TextChanged);
stackPanel1.Children.Add(tb);

0

水平方向のStackPanelの場合、両方のスクロールバーの可視性を明示的に配置すると、水平スクロールバーを取得できました。

    <ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
        <StackPanel Orientation="Horizontal" />
    </ScrollViewer>

1
以前の回答の繰り返し。
vapcguy 2016

-4

スタックパネルで複数のアイテムをスクロールしたい場合は、その周りにグリッドを配置してみてください。定義により、スタックパネルの長さは無限です。

したがって、次のようなことを試してください:

   <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <StackPanel Width="311">
              <TextBlock Text="{Binding A}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontStretch="Condensed" FontSize="28" />
              <TextBlock Text="{Binding B}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
        </StackPanel>
    </Grid>

ScrollViewerでこれを機能させることもできます


4
このコードはコンテキストから除外されています。依存関係を削除して、コードを変更しなくても使用できるようにできますか?
Markus Jarderot、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.