ListViewItem无法拉伸到ListView的宽度。

85
我正在使用XAML设计一个Windows 8商店应用程序,但是我遇到了一些大小调整的问题。我有一个带DataTemplate的ListView。
下面是我的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>

该ListView位于一个固定宽度为240的网格列中。

当视图显示时,ListViewItems不会拉伸到ListView的宽度。我尝试了设置许多属性,包括HorizontalContentAlignment,但似乎无法使ListViewItem拉伸!

有人可以帮忙吗?

我正在使用Visual Studio 2012,C#4.5并开发Windows存储应用程序。

2个回答

206
尝试将以下内容添加到您的ListView定义中。
<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListView.ItemContainerStyle>

1
错误:BindingExpression路径错误:在Project.WindowsPhone,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null的Project.CustomElement上未找到'Width'属性。 BindingExpression:Path ='Width' DataItem = Project.CustomElement,Project.WindowsPhone,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null';目标元素为'Windows.UI.Xaml.Controls.Grid'(名称='null');目标属性为'Width'(类型为'Double')。 - Black Cid
2
在DataTemplate中,像Grid一样不会自动拉伸到全宽的元素,你需要额外设置HorizontalAlignment="Stretch"。 - tipa
我还想补充一句评论,当我设置HorizontalAlignment="Left"时,我无法使其正常工作,但是当我将其删除时,它就像魔术般地正常工作了! - Andreas Forslöw

1
最简单的方法就是将HorizontalContentAlignment="Stretch"添加到ListView中。通常不需要做更多的事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接