从项目文件夹动态加载图像-Windows Phone 7

本文关键字:图像 -Windows Phone 加载 动态 项目 项目文件 文件夹 | 更新日期: 2023-09-27 17:59:02

我想做的似乎很简单,我在其他平台上也做过。。。

这里有一些上下文:假设您有1000个小图像,希望在数据绑定的ListBox中显示。您首先将项目中的图像包含在文件夹"/images"中。您将其生成操作设置为"内容"。

现在的问题是:如何在运行时将所有这些图像动态加载到应用程序中所谓动态,我的意思是不必知道1000张图片的每个名称。

(如果你考虑的是IsolatedStorage,我已经尝试过了。映像文件夹是你项目的一部分,但不会自动加载到IsolatedStorage.因此,据我所知,你不能从IsolatedSorage加载映像)

从项目文件夹动态加载图像-Windows Phone 7

您可以在设计时使用以下T4模板获得此信息:

<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ output extension=".gen.cs" #>
<#@ import namespace="System.IO"#>
// <auto-generated />
using Microsoft.Phone.Controls;
namespace MyAppNamespace
{
    public partial class MainPage : PhoneApplicationPage
    {
        private static string[] AllFilesInImagesFolder()
        {
            return new[] {
<#
            DirectoryInfo directoryInfo = new DirectoryInfo(Path.Combine(Path.GetDirectoryName(Host.TemplateFile), "images"));
            foreach(FileInfo file in directoryInfo.GetFiles("*.*", SearchOption.AllDirectories))
            {
                if (!file.FullName.Contains(@"'."))
                {#>
                           "<#= file.FullName.Substring(file.FullName.IndexOf("images")).Replace(@"'", "/") #>",
<#              }
            }
#>
                        };
        }
    }
}

它会生成类似于:

// <auto-generated />
using Microsoft.Phone.Controls;
namespace MyAppNamespace
{
    public partial class MainPage : PhoneApplicationPage
    {
        private static string[] AllFilesInImagesFolder()
        {
            return new[] {
                           "images/image1.png",
                           "images/image2.png",
                           "images/image3.png",
                           "images/image4.png",
                           "images/image5.png",
                        };
        }
    }
}

很明显,您可以根据需要更改分部类的名称空间和名称。