ListViewItem wird nicht auf die Breite einer ListView ausgedehnt

81

Ich entwerfe derzeit eine Windows 8 Store-App mit XAML, habe jedoch ein kleines Größenproblem. Ich habe eine ListView mit einem DataTemple.

Der Code für meine ListView & DataTemplate ist unten:

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

Die Listenansicht befindet sich in einer Rasterspalte mit einer festen Breite von 240.

Wenn die Ansicht angezeigt wird, erstrecken sich die ListViewItems nicht auf die Breite der ListView. Ich habe versucht, zahlreiche Eigenschaften festzulegen, einschließlich HorizontalContentAlignment, aber ich kann das ListViewItem scheinbar nicht zum Strecken bringen!

Kann jemand helfen?

Danke im Voraus.

Ich verwende Visual Studio 2012, C # 4.5 und entwickle eine Windows Store-App.

Sonne
quelle

Antworten:

196

Fügen Sie Ihrer ListView-Definition Folgendes hinzu

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListView.ItemContainerStyle>
Jim O'Neil
quelle
1
Fehler: BindingExpression-Pfadfehler: Die Eigenschaft 'Width' wurde in Project.CustomElement, Project.WindowsPhone, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null nicht gefunden. BindingExpression: Path = 'Width' DataItem = Project.CustomElement, Project.WindowsPhone, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null '; Zielelement ist 'Windows.UI.Xaml.Controls.Grid' (Name = 'null'); Zieleigenschaft ist 'Breite' (Typ 'Double')
Black Cid
2
Bei Elementen in der DataTemplate, die sich nicht automatisch auf die volle Breite erstrecken, wie dies beispielsweise im Raster der Fall ist, müssen Sie zusätzlich HorizontalAlignment = "Stretch" festlegen
tipa
Ich möchte auch einen Kommentar hinzufügen, dass ich dies nicht zum Laufen bringen konnte, wenn ich auch HorizontalAlignment = "Left" gesetzt habe, aber als ich es entfernt habe, hat es wie ein Zauber funktioniert!
Andreas Forslöw