Как проверить, существует ли файл внутри XAP? - PullRequest
4 голосов
/ 17 июня 2011

Я пишу приложение для Windows Phone 7, которое загружает образцы данных из файлов XML, развернутых внутри XAP. Эти XML-файлы локализованы, поэтому для каждой поддерживаемой культуры есть файл.

Состав:

SampleData.xml
SampleData.de.xml
SampleData.fr.xml
SampleData.it.xml
...

Имя загружаемого XML-файла основано на текущей культуре пользовательского интерфейса. Создать имя файла легко, но как проверить, существует ли локализованная версия текущей культуры пользовательского интерфейса?

System.IO.File.Exists () недоступен в Windows Phone 7. Я мог бы создать фиктивный файл для каждой культуры, поддерживаемой телефоном, но это довольно уродливо, подвержено ошибкам и не допускает откат к нейтральный язык. Есть идеи?

Ответы [ 3 ]

3 голосов
/ 24 ноября 2011
private bool IsFileExists(string relativePath)
{
    return Application.GetResourceStream(new Uri(relativePath, UriKind.Relative)) != null;
}

относительный путь НЕ должен начинаться с косой черты

2 голосов
/ 17 июня 2011

AFAIK нет способа перечислить файлы, содержащиеся в файле XAP. Поскольку вы создаете XAP, вы должны знать, какие файлы существуют, а какие нет. Если вы пытаетесь загрузить локализованную версию или откатитесь на версию по умолчанию, если первая не существует, тогда вместо перечисления файлов в пакете вы можете создать другой файл, в котором перечислены все доступные локализованные версии.

Кроме того, вы можете использовать что-то вроде XDocument.Load() в try-catch. Вероятно, он выдаст FileNotFoundException, который вы можете обработать, а затем загрузит версию по умолчанию.

1 голос
/ 20 июля 2012

Если файл помечен с помощью действия сборки «Ресурс», то для успешной загрузки ресурса необходимо добавить префикс локального пути к строке «/; component /».

return Application.GetResourceStream(new Uri("/PhoneProject1;component/" + relativePath, UriKind.Relative)) != null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...