Listview All'interno dello stackpanel all'interno della griglia non è scalabile
-
20-12-2019 - |
Domanda
In un'applicazione Windows 8.1 (.NET 4.5) ho (attraverso due modelli, a causa del vincolo) una griglia che contiene uno stackpanel che contiene un ListView. La cosa è che ListView non è scalabile con lo spazio disponibile, mostra invece una barra di scorrimento.
<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>
.
Modello per 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>
.
E il modello per il secondo elenco
<TextBlock Text="{Binding descricao}"
Margin="5"
Style="{StaticResource BodyTextBlockStyle}"
TextWrapping="WrapWholeWords"/>
.
Screenshot:
Mi piacerebbe per la valida di listview con la barra di scorrimento per avere la scala della dimensione per adattarsi al contenuto e solo scorrere se esaurisce lo spazio dello schermo.
Soluzione
Questo è un problema estremamente comune ... Il StackPanel
non ridimensiona il suo contenuto per adattarsi al controllo genitore come fa un Grid
.La soluzione è semplice ... non utilizzare un StackPanel
ad eccezione del più semplice il rivestimento di alcuni compiti di controllo.Invece di questo, utilizzare un Grid
che si adatta automaticamente a tutti gli spazi forniti dai controlli dei genitori.