UWP列表视图内容为空

UWP列表视图内容为空,uwp,Uwp,我的列表视图项没有出现。实际上,我正在尝试将文档库的文件名收集到我的列表视图中 以下是Xaml: <ListView x:Name="Mylist" SelectionMode="Single" ShowsScrollingPlaceholders="True" Grid.ColumnSpan="2" ItemsSource="{x:Bind data}" > <ListView.ItemTemplate>

我的列表视图项没有出现。实际上,我正在尝试将文档库的文件名收集到我的列表视图中

以下是Xaml:

 <ListView x:Name="Mylist" SelectionMode="Single" ShowsScrollingPlaceholders="True"
              Grid.ColumnSpan="2" ItemsSource="{x:Bind data}" >

        <ListView.ItemTemplate>
            <DataTemplate x:DataType="dat:Class1">
                <StackPanel>
                    <TextBlock Text="{Binding Key}" Style="{StaticResource TitleTextBlockStyle}"/>
                </StackPanel>
            </DataTemplate>   
        </ListView.ItemTemplate>

类别1文件:

namespace App1{
public class Class1:List<object>
{
    public Class1()
    {
    }
    public string Items { get; set; }
    public object Key { get; set; }
}}
名称空间App1{
公共类1:列表
{
公共类别1()
{
}
公共字符串项{get;set;}
公共对象密钥{get;set;}
}}
Mainpagexaml.cs

     public ObservableCollection<Class1> _data;
    public ObservableCollection<Class1> data { get { return _data; } }

    public MainPage()
    {
        this.InitializeComponent();

    }
    protected async override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        _data = await Data.ItemsGrouped();
    }
公共可观测采集数据;
公共可观测收集数据{get{return_data;}}
公共主页()
{
this.InitializeComponent();
}
受保护的异步重写无效OnNavigatedTo(NavigationEventArgs e)
{
基地。导航到(e);
_data=wait data.itemsgroup();
}
Data.cs

  public async static Task<ObservableCollection<Class1>> generatename()

    {
        ObservableCollection<Class1> newdata = new ObservableCollection<Class1>();
        //var myfiles = await getfiles();
        StorageFolder folder = await KnownFolders.GetFolderForUserAsync(null, KnownFolderId.DocumentsLibrary);
        List<string> filetypefilter = new List<string>();
        filetypefilter.Add(".mp3");

        QueryOptions query = new QueryOptions(CommonFileQuery.OrderBySearchRank, filetypefilter);
        StorageFileQueryResult queryresult = folder.CreateFileQueryWithOptions(query);
        IReadOnlyList<StorageFile> files = await queryresult.GetFilesAsync();
        foreach (var file in files)
        {
            newdata.Add(new Class1() { Items = file.Name });
            var f = file.Name;
        }
        return newdata;

    }
    public async static Task<ObservableCollection<Class1>> ItemsGrouped()
    {

        ObservableCollection<Class1> cgroup = new ObservableCollection<Class1>();
        var x = await generatename();
        var query = from item in x
                    group item by item.Items[0] into g
                    orderby g.Key
                    select new { GroupName = g.Key, Items = g };


        foreach (var item in query)
        {
            Class1 c1 = new Class1();
            c1.Key = item.GroupName;
            foreach (var item2 in item.Items)
            {
                c1.Add(item2);
                c1.Items = item2.Items;
            } 
            cgroup.Add(c1);
        }
        return cgroup;
    }
public异步静态任务generatename()
{
ObservableCollection newdata=新的ObservableCollection();
//var myfiles=wait getfiles();
StorageFolder folder=await KnownFolders.GetFolderForUserAsync(null,KnownFolderId.DocumentsLibrary);
List filetypefilter=新列表();
filetypefilter.Add(“.mp3”);
QueryOptions query=新的QueryOptions(CommonFileQuery.OrderBySearchRank,filetypefilter);
StorageFileQueryResult queryresult=文件夹。CreateFileQueryWithOptions(查询);
IReadOnlyList files=await queryresult.getfileasync();
foreach(文件中的var文件)
{
Add(newclass1(){Items=file.Name});
var f=file.Name;
}
返回新数据;
}
公共异步静态任务ItemsGrouped()
{
ObservableCollection cgroup=新的ObservableCollection();
var x=等待生成名();
var query=来自x中的项
按项目分组。项目[0]分为g
orderby g.Key
选择新{GroupName=g.Key,Items=g};
foreach(查询中的var项)
{
Class1 c1=新的Class1();
c1.Key=item.GroupName;
foreach(item.Items中的var item2)
{
c1.增加(第2项);
c1.项目=项目2.项目;
} 
cgroup.Add(c1);
}
返回cgroup;
}
我发现文件名是从data.cs文件读取的,但在UI中没有结果。

问题是您正在“替换”可观察的集合。而不是执行赋值
\u data=wait data.itemsgroup()在构造函数中只创建一次(
\u data=new ObservableCollection()
),然后不再分配它,只需清除它并用数据填充它即可

_data.Clear();
_data.AddRange(await Data.ItemsGrouped());

另外,让
ItemsGrouped
方法返回一个列表,而不是一个可观察的集合。

这很有效。现在,你能帮我将我的项目分组到一个CollectionViewSource中,这样我就可以按字母表对它们进行分组了。.我尝试了这个方法:MyView.Source=Wait getItems()-在onNavigatedTo方法内部,其中getItems()包含foreach方法。