【发布时间】:2018-05-24 02:10:40
【问题描述】:
在我的 WPF 应用程序中,我有一个 Stackpanel,其中包含多个控件。如何向此堆栈面板添加滚动条。
【问题讨论】:
标签: c# wpf xaml stackpanel scrollbars
在我的 WPF 应用程序中,我有一个 Stackpanel,其中包含多个控件。如何向此堆栈面板添加滚动条。
【问题讨论】:
标签: c# wpf xaml stackpanel scrollbars
将其放入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 来完成这项工作
【讨论】: