WP7: коллекция изображений - PullRequest
       6

WP7: коллекция изображений

1 голос
/ 26 октября 2010

У меня есть изображения в папке Изображения в моем решении для Windows Phone. Как я могу получить коллекцию изображений в этой папке? Действие по сборке всех изображений - «Контент».

1 Ответ

1 голос
/ 26 октября 2010

Меня беспокоило, что это было невозможно сделать, поэтому я немного покопался и нашел способ получения списка всех файлов изображений с помощью действия по сборке «Ресурс». - Да, это не совсем то, о чем просили, но, надеюсь, это все равно будет полезно.

Если вам действительно нужно использовать действие сборки «Содержимое», я бы использовал скрипт T4 для генерации списка файлов во время сборки. (Это то, что я делаю с одним из моих проектов, и он отлично работает.)

Предполагая, что изображения находятся в папке с именем "images", вы можете получить их с помощью следующего:

var listOfImageResources = new StringBuilder();

var asm = Assembly.GetExecutingAssembly();

var mrn = asm.GetManifestResourceNames();

foreach (var resource in mrn)
{
    var rm = new ResourceManager(resource.Replace(".resources", ""), asm);

    try
    {
        var NOT_USED = rm.GetStream("app.xaml"); // without getting a stream, next statement doesn't work - bug?

        var rs = rm.GetResourceSet(Thread.CurrentThread.CurrentUICulture, false, true);

        var enumerator = rs.GetEnumerator();
        while (enumerator.MoveNext())
        {
            if (enumerator.Key.ToString().StartsWith("images/"))
            {
                listOfImageResources.AppendLine(enumerator.Key.ToString());
            }
        }
    }
    catch (MissingManifestResourceException)
    {
        // Ignore any other embedded resources (they won't contain app.xaml)
    }
}

MessageBox.Show(listOfImageResources.ToString());

Это просто отображает список имен, но, надеюсь, будет легко изменить это, чтобы делать все, что вам нужно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...