Живая плитка не работает из-за ошибки в настройке изображения?

Страница App.xaml.cs моего приложения содержит следующий метод.

public static void SendLiveTileUpdate(Record rr)
{
    string imageUristring = "ms-appdata:///local/" + rr.Id.ToString() + ".jpg";

    XmlDocument wideTileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideImageAndText01);

    XmlNodeList wideTileTextAttrib = wideTileXml.GetElementsByTagName("text");
    wideTileTextAttrib[0].InnerText = rr.Name;

    XmlNodeList wideTileImageAttrib = wideTileXml.GetElementsByTagName("image");

    //((XmlElement)wideTileImageAttrib[0]).SetAttribute("src", "ms-appdata:///local/" + rr.Id.ToString() + ".jpg");
    ((XmlElement)wideTileImageAttrib[0]).SetAttribute("src", imageUristring);
    ((XmlElement)wideTileImageAttrib[0]).SetAttribute("alt", "Image");

    //Wide tile Layout done

    XmlDocument sqTileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareImage);

    XmlNodeList sqTileImageAttrib = sqTileXml.GetElementsByTagName("image");
    ((XmlElement)sqTileImageAttrib[0]).SetAttribute("src", imageUristring);
    ((XmlElement)sqTileImageAttrib[0]).SetAttribute("alt", "Image");

    IXmlNode node = wideTileXml.ImportNode(sqTileXml.GetElementsByTagName("binding").Item(0), true);
    wideTileXml.GetElementsByTagName("visual").Item(0).AppendChild(node);

    //Square tile set and added to wide tile xml

    TileNotification tileNot = new TileNotification(wideTileXml);

    tileNot.ExpirationTime = DateTime.Now.AddDays(5);

    updater.Update(tileNot);
}

На странице также есть глобальная переменная updater, которая используется при инициализации страницы для вызова EnableNotificationQueue(true) (затем позже для обновления очереди, как показано).

Проблема в том, что когда этот код запускается, он не работает. Я пришел к выводу, что это как-то связано с изображениями, потому что, когда назначения изображений исключены, живая плитка обновляется со значением rr.Id.ToString(), но включенная плитка никогда не обновляется. эти изображения, на которые ссылается imageUristring, присутствуют в локальном хранилище приложения (и имя соответствует идентификатору параметра метода), но все равно не работает. Рассматриваемые изображения имеют размер менее 200 КБ и имеют разрешение 1920x1080. (Думаю, они будут масштабироваться под тайл?)

Что я делаю не так? Как я могу заставить плитку обновляться изображением, хранящимся в локальном хранилище?


person J.B    schedule 06.04.2013    source источник


Ответы (1)


Ваши изображения должны быть ‹= 1024x1024. Из http://msdn.microsoft.com/en-us/library/windows/apps/Hh781198.aspx:

Мозаичные изображения должны иметь размер не более 1024 x 1024 пикселей, размер файла не более 200 КБ и быть в формате .png, .jpg, .jpeg или .gif.

person Jennifer Marsman - MSFT    schedule 07.04.2013
comment
Ах! Кажется, я пропустил это, просматривая документацию (и ваш пост в блоге!). Есть ли способ изменить их размер программно только для плитки? - person J.B; 07.04.2013
comment
Обновление: здесь найдено идеальное решение для изменения размера amoore.katalyststudios .com/content/ - person J.B; 08.04.2013
comment
Извините за задержку... да, такой код изменяет размеры изображений. Прочитайте в потоке, измените размер и запишите его. Рад, что у вас все готово. - person Jennifer Marsman - MSFT; 09.04.2013