ListView im StackPanel im Grid lässt sich nicht skalieren
-
20-12-2019 - |
Frage
In einer Windows 8.1-Anwendung (.NET 4.5) habe ich (aufgrund der Bindung über zwei Vorlagen hinweg) ein Grid, das ein StackPanel enthält, das eine ListView enthält.Die Sache ist, dass die ListView nicht mit dem verfügbaren Platz skaliert, sondern stattdessen eine Bildlaufleiste anzeigt.
<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>
Vorlage für die 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>
Und die Vorlage für die zweite ListView
<TextBlock Text="{Binding descricao}"
Margin="5"
Style="{StaticResource BodyTextBlockStyle}"
TextWrapping="WrapWholeWords"/>
Bildschirmfoto:
Ich möchte, dass die Größe der ListView mit der Bildlaufleiste an den Inhalt angepasst wird und nur dann gescrollt wird, wenn nicht mehr genügend Platz auf dem Bildschirm vorhanden ist.
Lösung
Dies ist ein äußerst häufiges Problem...Die StackPanel
tut nicht Ändern Sie die Größe des Inhalts so, dass er in das übergeordnete Steuerelement passt, z Grid
tut.Die Lösung ist einfach...Benutze kein a StackPanel
Abgesehen von der einfachsten Aufgabe, ein paar Kontrollaufgaben aneinanderzureihen.Verwenden Sie stattdessen a Grid
Dadurch wird automatisch der gesamte von den übergeordneten Steuerelementen bereitgestellte Platz ausgefüllt.