我正在尝试删除目录&当我点击ContextMenu的MenuItem时,它的所有内容。但是我似乎遇到了问题,因为文件/目录没有被删除。
但是我没有遇到任何错误,它似乎没有用。
到目前为止,这是我的代码:
private void gridSessionDelete_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
var item = (((sender as MenuItem).Parent as ContextMenu).Owner as Grid);
var title = (TextBlock)item.FindName("Title");
string directory = title.Text;
var appStorage = IsolatedStorageFile.GetUserStoreForApplication();
string[] fileList = appStorage.GetFileNames(directory + "\\*");
foreach (string file in fileList)
{
appStorage.DeleteFile(directory + "\\" + file);
}
appStorage.DeleteDirectory(directory);
bindList();
}
有没有人对我做错了什么有任何帮助?
感谢所有帮助表示赞赏!
答案 0 :(得分:0)
好吧,我可以看到几个错误可能的地方。
首先,这一行:
var item = (((sender as MenuItem).Parent as ContextMenu).Owner as Grid);
如您所知,当您使用 as 关键字转换类型时,结果可能为null,并且不会抛出任何异常。
其次,IMO最重要的是:
这一行:
string[] fileList = appStorage.GetFileNames(directory + "\\*");
那找不到任何东西。你应该在搜索请求中使用“。”(星点星)代替“*”(星号)。
此外,当您使用IsolatedStorage时,请使用使用关键字,例如:
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
// your code
}
答案 1 :(得分:0)
代码是否实际执行?断点会受到打击吗?如果是这样,这里是用于删除目录中所有文件的代码。它对我有用。我看到的主要区别在于DeleteFile方法。
var storage = IsolatedStorageFile.GetUserStoreForApplication();
if (storage.DirectoryExists(directoryName))
{
foreach (var oldFile in storage.GetFileNames(string.Concat(directoryName, "\\*")))
{
storage.DeleteFile(Path.Combine(directoryName, oldFile));
}
}