如何枚举XAP中包含为"内容"的图像?

Stu*_*art 5 silverlight resources windows-phone-7

我在部署的芒果XAP中包含了许多图像作为"内容".

我想在运行时列举这些 - 有什么办法可以做到这一点吗?

我已经尝试枚举如下资源:

foreach (string key in Application.Current.Resources.Keys)
{
    Debug.WriteLine("Resource:" + key);
}
Run Code Online (Sandbox Code Playgroud)

但图像不包含在列表中.我也尝试过使用嵌入式资源 - 但这并没有帮助.我可以阅读使用的流,Application.GetResourceStream(uri)但显然我需要知道这些名称才能做到这一点.

Oli*_*yen 1

无法枚举设置为“内容”的文件。

但是,如果将文件设置为“嵌入式资源”,则有一种方法可以在运行时枚举文件。

以下是您可以执行此操作的方法:

  1. 将图像的构建操作设置为“嵌入资源”。
  2. 用于Assembly.GetCallingAssembly().GetManifestResourceNames()枚举资源名称
  3. 用于 Assembly.GetCallingAssembly().GetManifestResourceStream(resName) 获取文件流。

这是代码:

    public void Test()
    {
        foreach (String resName in GetResourcesNames())
        {
            Stream s = GetStreamFromEmbeddedResource(resName);
        }
    }

    string[] GetResourcesNames()
    {
        return Assembly.GetCallingAssembly().GetManifestResourceNames();
    }

    Stream GetStreamFromEmbeddedResource(string resName)
    {
        return Assembly.GetCallingAssembly().GetManifestResourceStream(resName);
    }
Run Code Online (Sandbox Code Playgroud)

编辑:正如 quetzalcoatl 所指出的,此解决方案的缺点是图像嵌入在 DLL 中,因此如果图像量很大,应用程序加载时间可能会受到影响。