In meiner WPF-Anwendung befindet sich ein Stackpanel mit mehreren Steuerelementen. Wie kann ich diesem Stackpanel eine Bildlaufleiste hinzufügen?
In meiner WPF-Anwendung befindet sich ein Stackpanel mit mehreren Steuerelementen. Wie kann ich diesem Stackpanel eine Bildlaufleiste hinzufügen?
Antworten:
Legen Sie es in eine ScrollViewer
.
In Stackpanel ist kein Bildlaufmechanismus integriert, aber Sie können das StackPanel jederzeit in einen ScrollViewer einbinden
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel ... />
</ScrollViewer>
StackPanel
implementiert IScrollInfo
und bietet eine Reihe von Methoden zum Scrollen. Sind Sie sicher, dass es keinen "eingebauten" Bildlaufmechanismus gibt?
Es funktioniert so:
<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);
Bei horizontal ausgerichtetem StackPanel funktionierte es für mich, die beiden Sichtbarkeiten der Bildlaufleiste explizit zu setzen, um die horizontale Bildlaufleiste zu erhalten.
<ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
<StackPanel Orientation="Horizontal" />
</ScrollViewer>
Wenn Sie meinen, Sie möchten durch mehrere Elemente in Ihrem Stapelfenster scrollen, versuchen Sie, ein Raster darum zu legen. Per Definition hat ein Stackpanel eine unendliche Länge.
Probieren Sie so etwas aus:
<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>
Sie können dies sogar mit einem ScrollViewer zum Laufen bringen