StackPanel内のListViewの内部グリッドの拡張はありません
-
20-12-2019 - |
質問
Windows 8.1アプリケーション(.NET 4.5)では、ListViewを含むスタックパネルを含むグリッドを含むグリッドを持っています。 これは、ListViewが利用可能なスペースで拡大縮小されていませんが、代わりにスクロールバーを表示します。
<Grid DataContext="{Binding}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/> <!-- IF I set MinHeight here, it grows -->
</Grid.RowDefinitions>
<TextBlock Grid.Row="0"/>
<ListView
Grid.Row="1"
Margin="10"
ItemsSource="{Binding ementas}"
ItemTemplate="{StaticResource temp1}"
SelectionMode="None"
IsItemClickEnabled="False"
IsSwipeEnabled="False">
</ListView>
</Grid>
.
ListViewのテンプレート
<StackPanel Width="310" Margin="5,10,5,10" DataContext="{Binding}">
<TextBlock Text="{Binding data}" Style="{StaticResource TitleTextBlockStyle}"/>
<ListView SelectionMode="None"
IsItemClickEnabled="False"
ItemsSource="{Binding pratos}"
ItemTemplate="{StaticResource temp2}"
IsSwipeEnabled="False">
</ListView>
</StackPanel>
.
と2番目のListViewのテンプレート
<TextBlock Text="{Binding descricao}"
Margin="5"
Style="{StaticResource BodyTextBlockStyle}"
TextWrapping="WrapWholeWords"/>
.
スクリーンショット:
スクロールバーを使用しているListViewには、コンテンツに合わせるためのサイズスケールがあり、画面スペースがなくなった場合にのみスクロールします。
解決
これは非常に一般的な問題です... StackPanel
のような親コントロールに合わせて、その内容をサイズ変更するために、はその内容をサイズ変更します。解決策は簡単です...いくつかのコントロールの任務を並べる最も簡単なものを除いて、Grid
を使用しないでください。これの代わりに、Penterコントロールによって提供されるすべてのスペースに自動的に適合するStackPanel
を使用します。
所属していません StackOverflow