【发布时间】:2018-07-05 02:39:52
【问题描述】:
我有一个显示一些文件的网格视图。我想如果文件大小为0 kb,则该文件不显示并删除,而其他文件仍然显示 代码:
StorageFolder cover = await komik.GetFolderAsync("cover");
foreach (StorageFile file in sortedfiles)
{
bool bukuada = true;
Buku buku = new Buku();
buku.Judul = file.DisplayName.ToString();
BasicProperties pro = await file.GetBasicPropertiesAsync();
if (pro.Size != 0)
{
StorageFile thumbFile = file;
try
{
thumbFile = await cover.GetFileAsync(file.DisplayName.ToString() + ".jpg");
BitmapImage bi = new BitmapImage();
bi.SetSource(await thumbFile.OpenAsync(FileAccessMode.Read));
buku.Cover = bi;
datasource.Add(buku);
loading.IsActive = false;
this.itemGridView.ItemsSource = datasource;
}
catch
{
}
}
}
如果我使用上面的代码,那么如果有一个大小为 0 kb 的文件,则不会显示所有文件。如何仅获取未显示和删除的 0 kb 文件,而其他文件仍在显示?
【问题讨论】:
-
目前您的代码有什么问题?你不只需要添加一个
else然后在里面删除文件吗? -
问题是如果有1个或一些0 kb的文件,那么所有文件都无法显示。我只想要不显示的 0 kb 文件并且文件被删除。
-
你应该把
this.itemGridView.ItemsSource = datasource;放在foreach循环之后。 -
Define
datasourceas ObservableCollection:ObservableCollection<Buku> datasource = new ObservableCollection<Buku>();并将this.itemGridView.ItemsSource = datasource;行移出 foreach 循环(例如在它之前)。然后您的 GridView 应该会自动更新,而无需重置 ItemsSource。