1

相対パスを使用して XAML アプリケーションのフォルダーからすべてのファイルを取得する方法は?

WPF でビルドされた Kinect アプリケーションで遊んでいます。アプリケーションで使用されるすべての画像は に [project dir]\Images\あり、すべての背景は にあり [project dir]\Images\Backgrounds\ます。

相対パスを使用して Backgrounds ディレクトリからすべての画像のリストを取得したい。私が試してみました

DirectoryInfo(@"\Images\Backgrounds\").GetFiles();

しかし、Backgroundsディレクトリが存在する必要があると言われています[full path+project dir]\debug\bin\

各画像を手動で選択するとうまくいきます

Uri uri = new Uri(@"Images\Backgrounds\Background1.png", UriKind.Relative);
ImageSource imgsource = new BitmapImage(uri);
this.Backdrop.Source = imgsource;
4

2 に答える 2

3

GetFiles()特定の物理フォルダーでのみ機能しますが、ドライブ上のフォルダーではなく、アセンブリに埋め込まれたリソースへの URI を指定するため、単一のファイルに対して機能します。したがって、画像を埋め込む代わりにすべての画像をコピーするか、以下のコードを使用してresourceNames、プロジェクトで URI で参照できるすべてのリソースの名前を指定する必要があります。

List<string> resourceNames = new List<string>();
var assembly = Assembly.GetExecutingAssembly();
var rm = new ResourceManager(assembly.GetName().Name + ".g", assembly);
try
{
    var list = rm.GetResourceSet(CultureInfo.CurrentCulture, true, true);
    foreach (DictionaryEntry item in list)
        resourceNames.Add((string)item.Key);
}
finally
{
    rm.ReleaseAllResources();
}

必要に応じて、この時点で各リソースitem.Valueに含まれています。UnmanagedMemoryStream

于 2013-07-04T09:19:24.853 に答える