ListViewItem sẽ không kéo dài theo chiều rộng của ListView


81

Tôi hiện đang thiết kế ứng dụng cửa hàng windows 8 bằng XAML nhưng tôi gặp một vấn đề nhỏ về kích thước. Tôi có một ListView với một DataTemple.

Mã cho ListView & DataTemplate của tôi bên dưới:

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

Chế độ xem danh sách nằm trong cột lưới có chiều rộng cố định là 240.

Khi dạng xem được hiển thị, ListViewItems không kéo dài theo chiều rộng của ListView. Tôi đã thử thiết lập nhiều thuộc tính bao gồm HorizontalContentAlignment nhưng dường như tôi không thể làm cho ListViewItem kéo dài được!

Ai có thể giúp đỡ?

Cảm ơn trước.

Tôi đang sử dụng Visual studio 2012, C # 4.5 và đang phát triển ứng dụng cửa hàng Windows.

Câu trả lời:


197

Hãy thử thêm phần sau vào định nghĩa ListView của bạn

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListView.ItemContainerStyle>

1
Lỗi: Lỗi đường dẫn BindingExpression: Không tìm thấy thuộc tính 'Width' trên 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 '; phần tử đích là 'Windows.UI.Xaml.Controls.Grid' (Name = 'null'); thuộc tính mục tiêu là 'Width' (loại 'Double')
Black Cid

2
Trên các phần tử trong DataTemplate không tự động kéo dài hết chiều rộng như Grid chẳng hạn, bạn phải đặt thêm HorizontalAlignment = "Stretch"
tipa

Tôi cũng muốn thêm một nhận xét rằng tôi không thể làm cho điều này hoạt động khi tôi cũng đặt HorizontalAlignment = "Left", nhưng khi tôi gỡ bỏ nó, nó hoạt động như một cái duyên!
Andreas Forslöw
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.