回答:
に入れてください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でこれを機能させることもできます