如何在listview中拉伸listviewitem

如何在listview中拉伸listviewitem,listview,uwp,listviewitem,stretch,Listview,Uwp,Listviewitem,Stretch,开发者 我尝试以水平方向拉伸listview项。 我确实重置了ItemContainerStyle,并且水平对齐是拉伸的。 以下是MainPage.xaml中的所有代码 <Grid x:Name="rootGrid" HorizontalAlignment="Stretch" MinWidth="320" MaxWidth="480" Width="Auto"> <ListView x:Name="infoFlowList

开发者

我尝试以水平方向拉伸listview项。 我确实重置了ItemContainerStyle,并且水平对齐是拉伸的。 以下是MainPage.xaml中的所有代码

<Grid x:Name="rootGrid"
      HorizontalAlignment="Stretch"
      MinWidth="320"
      MaxWidth="480"
      Width="Auto">
    <ListView x:Name="infoFlowListView" 
              MinWidth="320"
              MaxWidth="480"
              Width="Auto"
              HorizontalAlignment="Stretch">
        <ListView.ItemTemplate>
            <DataTemplate>
                <local:MyUserControl1 MinWidth="300" HorizontalAlignment="Stretch"></local:MyUserControl1>
            </DataTemplate>
        </ListView.ItemTemplate>
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalAlignment" Value="Stretch"></Setter>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>
</Grid>

以下是MainPage.xaml.cs中的所有代码

public MainPage()
    {
        var items = new List<MyUserControl1>();
        for (int i = 0; i < 50; i++)
        {
            items.Add(new MyUserControl1());
        }
        this.InitializeComponent();
        infoFlowListView.ItemsSource = items;
    }
public主页()
{
var items=新列表();
对于(int i=0;i<50;i++)
{
添加(新的MyUserControl1());
}
this.InitializeComponent();
infoFlowListView.ItemsSource=项目;
}
以下是MyUserControl.xaml中的所有代码

<Grid>    
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"></ColumnDefinition>
    <ColumnDefinition Width="4*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
    <RowDefinition Height="Auto"></RowDefinition>
    <RowDefinition Height="*"></RowDefinition>
    <RowDefinition Height="Auto"></RowDefinition>
    <RowDefinition Height="8"></RowDefinition>
</Grid.RowDefinitions>

<Ellipse Width="60" Height="60"
         Grid.Column="0" Grid.Row="0" Grid.RowSpan="3"
         VerticalAlignment="Center" 
         HorizontalAlignment="Center" 
         Stretch="Uniform">
    <Ellipse.Fill>
        <ImageBrush ImageSource="Assets/1.png"></ImageBrush>
    </Ellipse.Fill>
</Ellipse>

<RelativePanel x:Name="topRelativePanel"
               Grid.Column="1" Grid.Row="0"
               HorizontalAlignment="Stretch">
    <TextBlock Text="TestName"
               VerticalAlignment="Bottom"
               RelativePanel.AlignLeftWithPanel="True"
               FontSize="12"
               HorizontalAlignment="Stretch"></TextBlock>
    <TextBlock Text="Author"
               VerticalAlignment="Bottom"
               RelativePanel.AlignRightWithPanel="True"
               FontSize="12"
               HorizontalAlignment="Stretch"
               Margin="0,0,8,0"></TextBlock>
</RelativePanel>

<TextBlock x:Name="nameTextBlock"
           Grid.Column="1" Grid.Row="1"
           Text="Name" 
           TextTrimming="WordEllipsis"
           VerticalAlignment="Stretch"
           HorizontalAlignment="Stretch"
           FontSize="18" >
</TextBlock>

<Grid x:Name="bottomGrid"
      Grid.Column="1" Grid.Row="2"
      VerticalAlignment="Top"
      HorizontalAlignment="Stretch">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"></ColumnDefinition>
        <ColumnDefinition Width="*"></ColumnDefinition>
        <ColumnDefinition Width="3*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="0"
               HorizontalAlignment="Stretch"
               Text="90"></TextBlock>
    <TextBlock Grid.Column="1"
               HorizontalAlignment="Stretch"
               Text="48"></TextBlock>
    <TextBlock Grid.Column="2"
               HorizontalAlignment="Stretch"
               Text="20170330 08:33"
               Margin="0,0,0,0"></TextBlock>
</Grid>

<Border Background="LightGray"
        VerticalAlignment="Stretch"
        HorizontalAlignment="Stretch"
        Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2"></Border>

我在6英寸模拟器上测试了这些代码,并添加了这个示例的屏幕截图

而移动仿真器却没有同样的结果。 下面是不同的模拟器屏幕截图。
这些屏幕截图的右侧不同。

我认为,这是因为ListView.ItemTemplate控件具有MaxWidth=“400”属性

我尝试以水平方向拉伸listview项

您需要为
ListViewItem
设置
HorizontalContentAlignment
属性,而不是
HorizontalAlignment
。使用以下代码,
ListViewItem
的内容将被扩展

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


默认的
ListViewItem
不会打开
HorizontalAlignment
设置程序,但是
HorizontalContentAlignment

您可能在InfoListViewItemUserControl中遇到问题,并且尚未提交该代码。剩下的似乎没问题。@IvanIčin我提交了usercontrol的xaml,你能告诉我问题出在哪里吗?非常感谢。我认为下面的答案是正确的,如果你设置MaxWidth,它会使拉伸对齐无效。你能提供一个项目吗?@suntenwu MSFT我不知道如何上传项目。所以我复制了这个示例的所有代码。我删除了usercontrol的maxwidth,但是listviewitem仍然不能在水平方向上拉伸。这是我的错。非常感谢,这很有帮助!