目录已按照LoadFiles方法中的指示进行了映射。但是,删除代码无法从隔离存储中的目录中删除文件,即使它已被映射。
这是LoadFile方法:
private ObservableCollection<FileItem> _files;
public ObservableCollection<FileItem> Files
{
get
{
this._files = this._files ?? this.LoadFiles();
return this._files;
}
}
private ObservableCollection<FileItem> LoadFiles()
{
ObservableCollection<FileItem> files = new ObservableCollection<FileItem>();
foreach (string filePath in this.Store.GetFileNames("FlashCardApp\\"))
files.Add(new FileItem { FileName = filePath });
return files;
}
这是删除代码,它假定在检查后从目录中删除文件,但即使store.FileExist已经映射到LoadFiles方法,也无法执行此操作:
private void OnDeleteSelected()
{
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
List<FileItem> removedItems = new List<FileItem>();
foreach (var item in Files)
{
if (item.IsChecked)
if (storage.FileExists(item.FileName))
{
storage.DeleteFile(item.FileName);
removedItems.Add(item);
}
}
foreach (var item in removedItems)
Files.Remove(item);
}
编辑:
以下是隔离存储类:
private IsolatedStorageFile currentStore;
public IsolatedStorageFile Store
{
get
{
this.currentStore = this.currentStore ?? IsolatedStorageFile.GetUserStoreForApplication();
return this.currentStore;
}
}
答案 0 :(得分:3)
在第一个代码片段中,您正在使用它.Store用于访问IsolatedStorage,在第二个代码片段中,您指的是IsolatedStorageFile.GetUserStoreForApplication();这些都指向同一个位置吗?
另外,在第二个代码片段中,storage.FileExists(item.FileName)是否返回true?或者你需要将“FlashCardApp”附加到文件名?例如:storage.FileExists("FlashCardApp\\" + item.FileName);