我有一个列表,在其中检索多个 mp3 文件。现在,当我想再次添加文件时,我从选择器中选择文件,但它们会覆盖 IReadOnlyList filesList 中以前的文件
我希望如果我再次选择文件...那么它们应该转到文件列表的下一个索引
例如:第一次我选择 3 个文件,它们转到 filesList[0]、filesList[1]、filesList[2]。
现在我再次单击 addmusicbtn 来选择文件,我选择了 2 个文件。现在我想要的是
获取 filesList[3] 和 filesList[4] 上的这些文件。但 IReadOnlyList 不允许这样做,它
从索引 0 开始存储。
我也尝试过 IList 但它不适用于文件选择器
IReadOnlyList<StorageFile> fileList;
private async void addmusicbtn_Click(object sender, RoutedEventArgs e)
{
var fop = new FileOpenPicker();
fop.FileTypeFilter.Add(".mp3");
fop.FileTypeFilter.Add(".mp4");
fop.FileTypeFilter.Add(".avi");
fop.FileTypeFilter.Add(".wmv");
fop.ViewMode = PickerViewMode.List;
fileList = await fop.PickMultipleFilesAsync();
foreach (StorageFile file in fileList)
{
mlist.Items.Add(file.Name);
stream = await file.OpenAsync(FileAccessMode.Read);
}
mediafile.SetSource(stream, file.ContentType);
mediafile.Play();
}
PickMultipleFilesAsync 将返回在该实例期间选取的文件。如果要将它们添加到先前选择的文件列表中,请将它们添加到单独的列表中,类似于将它们添加到 mlist 中的方式(但保存 StorageFile 而不是路径。StorageFile 更有用)。
这是代码的修改版本,它保留累积文件列表:
List<StorageFile> fileList; // don't forget to initialize this somewhere!
private async void addmusicbtn_Click(object sender, RoutedEventArgs e)
{
var fop = new FileOpenPicker();
fop.FileTypeFilter.Add(".mp3");
fop.FileTypeFilter.Add(".mp4");
fop.FileTypeFilter.Add(".avi");
fop.FileTypeFilter.Add(".wmv");
fop.ViewMode = PickerViewMode.List;
IReadOnlyList<StorageFile> pickedFileList;
pickedFileList= await fop.PickMultipleFilesAsync();
// add the picked files to our existing list
fileList.AddRange(pickedFileList);
// I'm not sure if you want fileList or pickedFileList here:
foreach (StorageFile file in fileList)
{
mlist.Items.Add(file.Name);
stream = await file.OpenAsync(FileAccessMode.Read);
mediafile.SetSource(stream, file.ContentType);
}
mediafile.Play();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)