How to enumerate images included as “Content” in the XAP?

后端 未结 3 1825
盖世英雄少女心
盖世英雄少女心 2020-12-11 19:59

I\'m including a number of images as \"Content\" in my deployed XAP for Mango.

I\'d like to enumerate these at runtime - is there any way to do this?

I\'ve t

相关标签:
3条回答
  • 2020-12-11 20:45

    There is no way to enumerate the files set as "Content".

    However, there is a way to enumerate files at runtime, if you set your files as "Embedded Resource".

    Here is how you can do this:

    1. Set the Build Action of your images as "Embedded Resource".
    2. Use Assembly.GetCallingAssembly().GetManifestResourceNames() to enumerate the resources names
    3. Use Assembly.GetCallingAssembly().GetManifestResourceStream(resName) to get the file streams.

    Here is the code:

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

    EDIT : As quetzalcoatl noted, the drawback of this solution is that images are embedded in the DLL, so if you a high volume of images, the app load time might take a hit.

    0 讨论(0)
  • 2020-12-11 20:50

    Having found no practical way to read the Content files from a XAP I build such a list at design time using T4.

    See an example at https://github.com/mrlacey/phonegap-wp7/blob/master/WP7Gap/WP7Gap/MainPage.xaml.cs

    This seems the right way to go as:
    a) I'd rather build the list once at design time rather than on every phone which needs the code.
    and
    b) I shouldn't ever be building the XAP without being certain about what files I'm including anyway.

    Plus it's a manual step to set the build action on all such files so adding a manual step to "Run Custom Tool" once for each build isn't an issue for me.

    0 讨论(0)
  • 2020-12-11 20:52

    This is no API baked in to WP7 that allows you to enumerate the contents of the Xap. You need to know the name of the content items before you can retreive them.

    There probably is some code floating around somewhere that is able to sniff out the Zip catalog in the XAP however I would strongly recommend that you don't bother. Instead include some sensible resource such as an Xml file or ResourceDictionary that lists them.

    0 讨论(0)
提交回复
热议问题