У своїй програмі WPF у мене є Stackpanel, що містить декілька елементів управління всередині них. Як додати панель прокрутки до цієї стекпанелі.
У своїй програмі WPF у мене є Stackpanel, що містить декілька елементів управління всередині них. Як додати панель прокрутки до цієї стекпанелі.
Відповіді:
Покладіть його в ScrollViewer
.
Stackpanel не має вбудованого механізму прокрутки, але ви завжди можете загортати StackPanel у ScrollViewer
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel ... />
</ScrollViewer>
StackPanel
реалізує IScrollInfo
та пропонує ряд методів, що стосуються прокрутки. Ви впевнені, що він не має жодного "вбудованого" механізму прокрутки?
Це працює так:
<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);
Для горизонтально орієнтованого StackPanel явно розміщуючи обидві видимості смуги прокрутки, працював для мене, щоб отримати горизонтальну смугу прокрутки.
<ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
<StackPanel Orientation="Horizontal" />
</ScrollViewer>
Якщо ви хочете сказати, ви хочете прокрутити кілька елементів у вашій стекпанелі, спробуйте поставити навколо неї сітку. За визначенням, стекпанель має нескінченну довжину.
Тож спробуйте щось подібне:
<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