ListViewItem no se extenderá al ancho de ListView

81

Actualmente estoy diseñando una aplicación de la tienda de Windows 8 usando XAML pero tengo un problema menor de tamaño. Tengo un ListView con un DataTemple.

El código para mi ListView y DataTemplate está a continuación:

<ListView x:Name="listPageItems"
          Grid.Row="1"
          SelectionMode="Extended"
          IsSwipeEnabled="False"
          ItemsSource="{Binding Mode=OneWay, Source={StaticResource items}}"
          ItemTemplate="{StaticResource NavigationItemTemplate}"
          ScrollViewer.VerticalScrollBarVisibility="Visible">

</ListView>

<DataTemplate x:Key="NavigationItemTemplate">    
        <Grid Height="75">
            <Grid.RowDefinitions>
                <RowDefinition Height="1.6*" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Rectangle Fill="White" />
            <Rectangle Fill="{StaticResource SSEGreenBrush}"
                       Grid.Row="1" />
            <Border BorderThickness="2"
                    BorderBrush="{StaticResource SSEGreenBrush}"
                    Grid.RowSpan="2" />
            <TextBlock x:Name="textTitle"
                       Text="{Binding ClientName}"
                       Style="{StaticResource TitleTextStyle}"
                       Foreground="{StaticResource SSEBlueBrush}"
                       Margin="10,5,5,5" />
            <StackPanel Orientation="Horizontal"
                        Grid.Row="1"
                        HorizontalAlignment="Stretch">
                <TextBlock Text="Last Edit :"
                           Style="{StaticResource SubtitleTextStyle}"
                           Foreground="{StaticResource SSEBlueBrush}"
                           Margin="3,0,0,3"
                           VerticalAlignment="Center" />
                <TextBlock Text="SurveyDate"
                           Style="{StaticResource SubtitleTextStyle}"
                           Foreground="{StaticResource SSEBlueBrush}"
                           Margin="3,0,0,3"
                           VerticalAlignment="Center" />
            </StackPanel>
        </Grid>
    </DataTemplate>

La vista de lista está dentro de una columna de cuadrícula con un ancho fijo de 240.

Cuando se muestra la vista, ListViewItems no se extiende al ancho de ListView. Intenté configurar numerosas propiedades, incluido HorizontalContentAlignment, ¡pero parece que no puedo hacer que ListViewItem se estire!

¿Alguien puede ayudar?

Gracias por adelantado.

Estoy usando Visual Studio 2012, C # 4.5 y estoy desarrollando una aplicación para la tienda de Windows.

Dom
fuente

Respuestas:

197

Intente agregar lo siguiente a su definición de ListView

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListView.ItemContainerStyle>
Jim O'Neil
fuente
1
Error: error de ruta de BindingExpression: la propiedad 'Width' no se encuentra en Project.CustomElement, Project.WindowsPhone, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null '. BindingExpression: Path = 'Width' DataItem = Project.CustomElement, Project.WindowsPhone, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null '; el elemento de destino es 'Windows.UI.Xaml.Controls.Grid' (Nombre = 'nulo'); la propiedad de destino es 'Width' (tipo 'Double')
Black Cid
2
En los elementos de DataTemplate que no se extienden automáticamente al ancho completo como lo hace la cuadrícula, por ejemplo, debe establecer adicionalmente HorizontalAlignment = "Stretch"
tipa
También me gustaría agregar un comentario de que no pude hacer que esto funcione cuando también configuré HorizontalAlignment = "Left", pero cuando lo eliminé, ¡funcionó como un encanto!
Andreas Forslöw