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