【问题标题】:LongListSelector Windows Phone 8.1长列表选择器 Windows Phone 8.1
【发布时间】:2015-06-13 08:39:03
【问题描述】:

我想在 Windows phone 8.1 中开发类似 Longlist Selector Wp8 的布局。

我遇到了一个问题,我的列表没有出现。

XAML 页面

<Grid >

    <Grid.Resources>
        <CollectionViewSource x:Name="MainGrps"
                      IsSourceGrouped="True"/>
    </Grid.Resources>

    <ListView ItemsSource="{Binding Source={StaticResource MainGrps}}"  Margin="50">

         <ListView.ItemTemplate>
            <DataTemplate >
                <Grid Background="Gray">
                    <StackPanel>
                        <TextBlock Foreground="White" FontSize="20" Text="{Binding ItmName}"/>
                        <TextBlock Foreground="White" FontSize="20" Text="{Binding ItmType}"/>
                    </StackPanel>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>

        <ListView.GroupStyle>
            <GroupStyle HidesIfEmpty="True" >
                <GroupStyle.HeaderTemplate>
                    <DataTemplate >
                        <Grid Background="Red">
                            <StackPanel Orientation="Horizontal" >
                                <TextBlock Text="{Binding GrpItmName}" Foreground="White"/>
                                <TextBlock Text="{Binding ItemsCount}" Foreground="White"/>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
            </GroupStyle>
        </ListView.GroupStyle>
    </ListView>
</Grid>

代码背后:

private void OnPageLoaded(object sender, RoutedEventArgs e)
    {
        lst_grp = new List<Grp>();

        for (int i = 0; i < 10; i++)
        {
            Grp grp = new Grp();
            grp.GrpItmName = "grp name " + i;
            grp.ItemsCount = i;

            grp.LstItms = new List<Itm>();

            Itm itm = new Itm();
            itm.ItmName = "itm name " + i;
            itm.ItmType = "itm type " + i;

            grp.LstItms.Add(itm);
            grp.LstItms.Add(itm);
            grp.LstItms.Add(itm);

            lst_grp.Add(grp);
        }

        this.MainGrps.Source = lst_grp;
    }

上面的代码有问题吗?

请帮我弄清楚或建议您是否有工作代码。

【问题讨论】:

    标签: windows windows-phone-8 windows-phone-8.1


    【解决方案1】:

    改变

    <GroupStyle HidesIfEmpty="True" >
    

    到:

    <GroupStyle HidesIfEmpty="False" >
    

    【讨论】:

      【解决方案2】:

      尝试在 XAML 中的 ListView 标记内添加此内容:

      HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
      

      或者尝试手动设置ListView的width和height参数..只是试试..

      告诉我!

      【讨论】:

      • 抱歉不是 UI 问题。这是集合资源绑定问题。
      • 能否请您尝试将列表直接绑定到ListView?在后面的代码中删除这一行:this.MainGrps.Source = lst_grp; 并使用这一行:mainListView.ItemsSource = lst_grp;
      • CollectionViewSource 是绑定列表组的方法。如果我将数据直接绑定到 ListView ItemSource,我将无法显示组内的列表项,我只能显示标题列表。但是在这里我需要显示其中包含子列表的列表。明白了吗?
      • 你有没有尝试过这样的事情:&lt;TextBlock DataContext="{Binding Source={StaticResource MainGrps}, Mode=OneWay}" Text="{Binding GrpItmName}"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多