0

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();
}

私が間違っていることについて誰かが助けてくれますか?

すべての助けに感謝します!

4

2 に答える 2

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));
    }
}
于 2013-07-24T15:48:40.257 に答える
0

エラーが発生している可能性のある場所がいくつかわかります。

まず、この行:

var item = (((sender as MenuItem).Parent as ContextMenu).Owner as Grid);

ご存知のように、asキーワードで型をキャストすると、結果が null になる可能性があり、例外はスローされません。

次に、IMO で最も重要なこと:

この行:

string[] fileList = appStorage.GetFileNames(directory + "\\*");

それでは何も見つかりません。検索リクエストでは、「*」(星) の代わりに「 . 」(星-点-星)を使用する必要があります。

また、IsolatedStorage を使用する場合は、次のようなusingキーワードを使用します。

 using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
              // your code
            }
于 2013-07-24T05:39:44.413 に答える