1

如何使用相对路径从 XAML 应用程序中的文件夹中获取所有文件?

我正在使用 WPF 中构建的 Kinect 应用程序。应用程序中使用的所有图像都在 [project dir]\Images\,所有背景都在 [project dir]\Images\Backgrounds\.

我想使用相对路径从背景目录中获取所有图像的列表。我努力了

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

但它说背景目录必须存在于[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

它适用于单个文件,因为您指定了嵌入程序集中的资源的 URI,而不是驱动器上的某个文件夹,而GetFiles()仅适用于特定的物理文件夹。因此,要么您需要复制所有图像而不是嵌入它们,要么使用下面的代码,并且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 回答
0

我会回复你的帖子而不是发布解决方案,但我是这个网站的新手,还没有那个特权....嘿!只是想帮忙。

无论如何,关于 DirectoryInfo,我之前遇到过类似的问题。不记得我是如何解决它的,但我记得反斜杠很棘手。你检查过 MSDN 网站吗?它似乎找不到您的目录,因此默认情况下在调试中查找它。MSDN 说格式应该是 C# 中的“MyDir\MySubdir”。

于 2013-07-04T02:56:07.197 回答