1

重複の可能性:
Windows Phone 7 アプリケーションのプロジェクトでリストボックスにファイルを設定する方法

私はC#の初心者で、これは私をとても悩ませています。

私のアプリケーションは、ソリューション エクスプローラーで作成した というフォルダーから一連の画像を読み込みますImages。これらの画像を URI などでハードコーディングして使用すれば表示できますが、これらの画像の名前を動的に取得してロードする必要があります。そのような質問をいくつか見ましたが、問題を解決できませんでした。私はこのようにしようとしています:

DirectoryInfo directoryInfo = new DirectoryInfo(@"/Images");
foreach (FileInfo file in directoryInfo.GetFiles()) {
      photos.Add(new Photo() { FileName = file.FullName, PhotoSource = GetImageSource("Images/" + file.FullName) });
}

directoryInfo常にヌルに設定されます。ソリューション エクスプローラーに表示される私のプロジェクト階層は次のようになります。

 Project
     Main.xaml
         Maim.xaml.cs
     Images
         1.jpg
         2.jpg
         ...

助けてくれてありがとう。

4

2 に答える 2

1

MSDNから:

Windows Phone アプリケーションの場合、すべての I/O 操作は分離ストレージに制限されており、基盤となるオペレーティング システムのファイル システムや他のアプリケーションの分離ストレージに直接アクセスすることはできません。

そのため、好きな方法で Images フォルダーにアクセスすることはできません。

いずれにしても XAP に画像を動的に追加することはできないため、使用可能な画像は一定になります。手動で URI を追加する必要があるようです。

BitmapImage myImage = new BitmapImage(new Uri("Images/myImage.png", UriKind.Relative));

ロケールごとに異なるイメージがある場合は、イメージの名前/パスをリソース ファイルに含めて、そこから作成することができます。

または、一連の既定の画像があり、ユーザーが追加した画像がいくつかあり、それらすべてを反復処理したい場合は、最初の起動時に既定値を Images フォルダーから IsolatedStorage に書き込むことができます。IsolatedStorage の使用方法の詳細については、こちらを参照してください。アプリの IsolatedStorageFile 内のディレクトリとファイルを反復処理できます (使用可能なメソッドを参照してください)。

于 2012-12-11T22:39:48.247 に答える
0

多分あなたは使いたい

string path = Path.Combine(Environment.CurrentDirectory, "Images");
foreach (string file in Directory.GetFiles(path) 
{
     photos.Add(new Photo {FileName = file, PhotoSource = GetImageSource(Path.Combine(path, Path.GetFileNameWithoutExtension(file))});
}

フォルダの内容のリストを返します。

Path.Combineは、単一の文字列を完全なパスに結合します(したがって、バックスラッシュについて心配する必要はありません。

パス名前空間はかなり過小評価されています。時間を大幅に節約できるので、よく調べてみることをお勧めします。

于 2012-12-11T21:27:05.400 に答える