如何在XAML中水平显示Listview项?

时间:2016-12-15 09:48:17

标签: xaml windows-store-apps winrt-xaml

正在使用C#和xaml开发Windows应用商店8.1应用。 我有一个类似于enter image description here

的用户界面要求

我有一个要显示的项目列表,必须进行分组,所以为此我采用了listview,我已完成分组,工作正常。列表视图项目是垂直对齐的,但我想将它们水平对齐,就像在图片。 我已将以下代码添加到列表视图中,但它无效。

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapGrid MaximumRowsOrColumns="1" HorizontalChildrenAlignment="Stretch"
                  Orientation="Horizontal"/>
    </ItemsPanelTemplate>
</ListView.ItemsPanel>

有人可以帮我解决这个问题。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我很确定你只需要设置MaximumRowsOrColumns =“2”,基本上你想要开始包装2个元素。设置为1,它只会在一个元素后面换行,与垂直堆栈面板没有区别。

然后你可能需要调整宽度。

Windows 8.1 how to automatically wrap grid items?

答案 1 :(得分:0)

我在ItemsWrapGrid中设置了MaximumRowsOrColumns =“2”,它运行正常。请检查我的代码,看看你是否遗漏了什么。 在MainPage.xaml中:

<Page.Resources>
    <CollectionViewSource x:Key="cvs" ItemsPath="showitem" x:Name="cvs" IsSourceGrouped="True"></CollectionViewSource>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ListView Width="500" ItemsSource="{Binding Source={StaticResource cvs}}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsWrapGrid MaximumRowsOrColumns="2" Orientation="Horizontal"></ItemsWrapGrid>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Path=Name}" />
                <TextBox Width="50" BorderBrush="Blue" BorderThickness="3"></TextBox>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
        <ListView.GroupStyle>
            <GroupStyle>
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Width="400" Height="60" Background="Blue">
                        <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding id}" Foreground="Red"></TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>  
            </GroupStyle>
        </ListView.GroupStyle>
    </ListView>
</Grid>

在MainPage.xaml.cs中:

public class test
{
    public string Name { get; set; }
}
public class testlist

{
    public string id { get; set; }
    public List<test> showitem { get; set; }
}
public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        List<testlist> mylist = new List<testlist>();
        testlist testlist = new testlist();
        testlist.id = "group1";
        testlist.showitem = new List<test>();
        testlist.showitem.Add(new test() { Name = "Test1" });
        testlist.showitem.Add(new test() { Name = "Test2" });
        mylist.Add(testlist);

        testlist testlist1 = new testlist();
        testlist1.id = "group1";
        testlist1.showitem = new List<test>();
        testlist1.showitem.Add(new test() { Name = "Test3" });
        testlist1.showitem.Add(new test() { Name = "Test4" });
        mylist.Add(testlist1);

        this.cvs.Source = mylist;

    }
}

结果: enter image description here