【问题标题】:ListViewItem won't stretch to the width of a ListViewListViewItem 不会拉伸到 ListView 的宽度
【发布时间】:2013-02-25 12:46:03
【问题描述】:

我目前正在使用 XAML 设计一个 Windows 8 商店应用程序,但我遇到了一个小问题。我有一个带有 DataTemple 的 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>

列表视图位于固定宽度为 240 的网格列内。

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

有人可以帮忙吗?

提前致谢。

我正在使用 Visual Studio 2012、C# 4.5 并开发 Windows 商店应用程序。

【问题讨论】:

    标签: windows-8 winrt-xaml listviewitem


    【解决方案1】:

    尝试将以下内容添加到您的 ListView 定义中

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

    【讨论】:

    • 错误:BindingExpression 路径错误:在 Project.CustomElement、Project.WindowsPhone、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null 上找不到“Width”属性。 BindingExpression:Path='Width' DataItem=Project.CustomElement,Project.WindowsPhone,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null';目标元素是'Windows.UI.Xaml.Controls.Grid'(名称='null');目标属性是“宽度”(类型“双”)
    • 在 DataTemplate 中不会像 Grid 那样自动拉伸到全宽的元素上,例如,您必须另外设置 Horizo​​ntalAlignment="Stretch"
    • 我还想添加一条评论,当我还设置 Horizo​​ntalAlignment="Left" 时,我无法让它工作,但是当我删除它时,它就像一个魅力!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多