ページの左側に、次の要素を持つ垂直 StackPanel があります。
- 1 テキストブロック
- 利用可能なスペースを埋める複数の要素を持つ 1 つの垂直 StackPanel
ScrollViewer要素を使用して 2 番目のStackPanel をスクロール可能にしようとしていますが、成功しません。ScrollViewer Height を何らかの値に定義すると機能しますが、利用可能なすべての垂直スペースを埋めたいので、そうしたくありません。
StackPanel で計算された Height を読み取るコードに ScrollViewer Height を適用することを考えていますが、これは正しい方法ではないようです。HeightとActualHeightを StackPanel Height プロパティにバインドしようとしましたが、結果はありませんでした。
<ScrollViewer
Grid.Row="1"
VerticalAlignment="Top"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollMode="Enabled"
ScrollViewer.HorizontalScrollMode="Disabled"
ScrollViewer.ZoomMode="Disabled">
<StackPanel x:Name="sptest" Orientation="Vertical">
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test1</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test2</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test3</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test4</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test5</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test6</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test7</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test8</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test9</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test10</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test11</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test12</TextBlock>
</StackPanel>
</ScrollViewer>
加えて、水平方向の利用可能なスペースを埋める GridView もあり、自動的にスクロールバーがあります。私はそれを定義しておらず、必要に応じて表示されます。StackPanel が思いどおりに動作しないのは奇妙です。私は何を間違っていますか?
編集
私はこのSOの質問を見つけました。これはWinRT ではなくWPFに関するものですが、おそらく同じ問題です。それは言います:
StackPanel の高さを固定しないとできません。一方向に無期限に成長するように設計されています。別のパネルを使用することをお勧めします
StackPanel を Grid に変更しました (列が 1 つしか必要ないため、行の定義が原因でしたくありませんでした) が、ScrollViewer も機能しません。