Cara menambahkan ScrollBar ke Stackpanel


106

Di aplikasi WPF saya, saya memiliki Stackpanel yang berisi beberapa kontrol di dalamnya. Bagaimana cara menambahkan Scrollbar ke stackpanel ini.

Jawaban:


162

Masukkan ke dalam ScrollViewer.


Terima kasih. Setelah meletakkan ScrollViewer di sekitarnya, seluruh konten tidak muncul. Saya mencoba mengatur Tinggi dan Lebar ke Otomatis, tetapi tidak berhasil. Mengapa hanya sebagian kecil yang ditampilkan?
Shamim Hafiz

5
Saya tidak tahu. Pertanyaan Anda terdiri dari dua kalimat yang merupakan sedikit detail untuk mengantisipasi potensi masalah.
Joey

Oke, saya menempatkan tag pembuka di tempat yang salah. Terima kasih banyak atas bantuannya.
Shamim Hafiz

Jawaban sederhana dan sempurna.
David Piao

94

Stackpanel tidak memiliki mekanisme scrolling bawaan, tetapi Anda selalu dapat menggabungkan StackPanel di ScrollViewer

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

3
Nah, StackPanelmenerapkan IScrollInfodan menawarkan sejumlah metode terkait pengguliran. Anda yakin tidak ada jenis mekanisme pengguliran "bawaan"?
ATAU Mapper

4
dari msdn.microsoft.com/en-us/library/… ... "Properti ini tidak dimaksudkan untuk digunakan dalam kode Anda. Properti ini ditampilkan secara publik untuk memenuhi kontrak antarmuka (IScrollInfo). Menyetel properti ini tidak akan berpengaruh. Jika Anda memerlukan pengguliran fisik alih-alih pengguliran logis, gabungkan StackPanel di ScrollViewer dan setel properti CanContentScroll ke false. "
Skinner

11

Ini bekerja seperti ini:

<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

Untuk StackPanel yang berorientasi horizontal, secara eksplisit menempatkan kedua visibilitas scrollbar berfungsi bagi saya untuk mendapatkan scrollbar horizontal.

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

1
Ulangi jawaban sebelumnya.
vapcguy

-4

Jika maksud Anda, Anda ingin menggulir beberapa item di stackpanel Anda, coba letakkan kotak di sekitarnya. Menurut definisi, stackpanel memiliki panjang tak terbatas.

Jadi cobalah sesuatu seperti ini:

   <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>

Anda bahkan dapat membuat ini berfungsi dengan ScrollViewer


4
Kode ini diambil di luar konteks. Bisakah Anda menghapus dependensi, sehingga kode dapat digunakan tanpa modifikasi lebih lanjut?
Markus Jarderot
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.