Динамически загружать изображения из папки проекта - Windows Phone 7 - PullRequest
2 голосов
/ 14 июня 2011

То, что я хочу сделать, кажется очень простым, и я сделал это на других платформах ...

Вот некоторый контекст: допустим, у вас есть 1000 маленьких изображений, которые вы хотите отобразить в ListBox с привязкой к базе данных.,Вы начинаете с добавления изображений из вашего проекта в папку «/ images».Вы устанавливаете действие по их сборке на «Контент».

Теперь вопрос: Как вы динамически загружаете все эти изображения в свое приложение во время выполнения? Под динамическим я подразумеваю отсутствие необходимости знать каждое имя из 1000 изображений.

(Если вы думаете о IsolatedStorage, я попробовал это. Папка с изображениями является частью вашего проекта, но не загружается автоматически в IsolatedStorage, поэтому вы не можете, насколько я знаю, загружать изображения из IsolatedStorage)

1 Ответ

6 голосов
/ 14 июня 2011

Вы можете получить это во время разработки с помощью следующего шаблона 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",
                        };
        }
    }
}

Вы можете явно изменить пространство имен и имячастичного класса по вашему усмотрению.

...