ListViewItem не будет растягиваться до ширины ListView

В настоящее время я разрабатываю приложение для магазина Windows 8 с использованием XAML, но у меня есть небольшая проблема с размером. У меня есть ListView с DataTemple.

Ниже приведен код моего ListView и DataTemplate:

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

Список находится в столбце сетки с фиксированной шириной 240.

Когда представление отображается, ListViewItems не растягиваются до ширины ListView. Я пытался установить множество свойств, включая HorizontalContentAlignment, но не могу заставить ListViewItem растянуться!

Кто-нибудь может помочь?

Заранее спасибо.

Я использую Visual Studio 2012, С# 4.5 и разрабатываю приложение для магазина Windows.


person Sun    schedule 25.02.2013    source источник


Ответы (2)


Попробуйте добавить следующее в определение ListView.

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListView.ItemContainerStyle>
person Jim O'Neil    schedule 25.02.2013
comment
Ошибка: ошибка пути BindingExpression: свойство «Width» не найдено в Project.CustomElement, Project.WindowsPhone, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null. BindingExpression: Path='Width' DataItem=Project.CustomElement, Project.WindowsPhone, Version=1.0.0.0, культура=нейтральная, PublicKeyToken=null'; целевой элемент — «Windows.UI.Xaml.Controls.Grid» (Name = «null»); целевое свойство — «Ширина» (тип «Двойной») - person Black Cid; 10.04.2015
comment
Для элементов в DataTemplate, которые автоматически не растягиваются до полной ширины, как, например, Grid, вам необходимо дополнительно установить HorizontalAlignment=Stretch - person tipa; 03.11.2015
comment
Я также хотел бы добавить комментарий, что я не мог заставить это работать, когда я также установил HorizontalAlignment=Left, но когда я удалил его, это сработало как шарм! - person Andreas Forslöw; 08.03.2019

Проще всего просто добавить HorizontalContentAlignment="Stretch" в ListView. Как правило, больше ничего не нужно.

person TheBlueOne    schedule 23.05.2021