Bir Stackpanel'e ScrollBar nasıl eklenir?


106

WPF uygulamamda, içinde birkaç kontrol içeren bir Stackpanel var. Bu yığın paneline nasıl bir Kaydırma Çubuğu ekleyebilirim?

Yanıtlar:


162

Teşekkürler. Çevresine bir ScrollViewer koyduktan sonra, içeriğin tamamı görünmüyor. Yükseklik ve Genişliği Otomatik olarak ayarlamayı denedim ama şansım olmadı. Neden yalnızca sınırlı bir kısım gösterilmeli?
Shamim Hafiz

5
Hiçbir fikrim yok. Sorunuz, olası sorunları önceden tahmin etmek için biraz ayrıntı içeren iki cümle uzunluğundaydı.
Joey

Anladım, açılış etiketini yanlış yere yerleştiriyordum. Yardımın için çok teşekkürler.
Shamim Hafiz

Basit ve mükemmel cevap.
David Piao

94

Stackpanel, yerleşik kaydırma mekanizmasına sahip değildir, ancak StackPanel'i her zaman bir ScrollViewer'a sarabilirsiniz

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

3
Peki, kaydırma ile ilgili bir dizi yöntem StackPaneluygular IScrollInfove sunar. Herhangi bir "yerleşik" kaydırma mekanizmasına sahip olmadığından emin misiniz?
VEYA Eşleştirici

4
dan msdn.microsoft.com/en-us/library/... ... "Bu mülk kodu kullanılmak üzere tasarlanmamıştır. Bir ara birim sözleşmesi (IScrollInfo) yerine getirmek için kamuya açıktır. Bu özelliği ayarlamak hiçbir etkisi olmaz. Eğer mantıksal kaydırma yerine fiziksel kaydırmaya ihtiyacınız varsa, StackPanel'i ScrollViewer'a sarın ve CanContentScroll özelliğini false olarak ayarlayın. "
Skinner

11

Şu şekilde çalışır:

<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

Yatay olarak yönlendirilmiş StackPanel için, her iki kaydırma çubuğu görünürlüğünü de açıkça koymak, yatay kaydırma çubuğunu elde etmem için çalıştı.

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

1
Önceki cevapları tekrarlayın.
vapcguy

-4

Yığın panelinizdeki birden çok öğe arasında gezinmek istiyorsanız, etrafına bir ızgara koymayı deneyin. Tanım olarak, bir yığın panelinin sonsuz uzunluğu vardır.

Öyleyse şuna benzer bir şey deneyin:

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

Bunu bir ScrollViewer ile bile çalıştırabilirsiniz


4
Bu kod bağlamın dışına çıkarılır. Bağımlılıkları kaldırabilir misiniz, böylece kod daha fazla değişiklik yapılmadan kullanılabilir mi?
Markus Jarderot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.