Pergunta

Em um aplicativo Windows 8.1 (.NET 4.5), tenho (em dois modelos, por causa da ligação) uma grade que contém um StackPanel que contém um ListView.O problema é que o ListView não é dimensionado com o espaço disponível; em vez disso, mostra uma barra de rolagem.

<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>

Modelo para o 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 o modelo para o segundo ListView

<TextBlock Text="{Binding descricao}"
    Margin="5"
    Style="{StaticResource BodyTextBlockStyle}"
    TextWrapping="WrapWholeWords"/>

Captura de tela:Screenshot

Gostaria que o ListView com a barra de rolagem tivesse sua escala de tamanho para caber no conteúdo e rolasse apenas se ficar sem espaço na tela.

Foi útil?

Solução

Este é um problema extremamente comum...o StackPanel faz não redimensionar seu conteúdo para caber no controle pai como um Grid faz.A solução é simples...não use um StackPanel exceto a mais simples de alinhar algumas tarefas de controle.Em vez disso, use um Grid que caberá automaticamente em todo o espaço fornecido pelos controles pai.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top