2013-04-06 2 views
1

Страница 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); 
} 

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

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

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

ответ

2

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

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

+0

Ahh! Кажется, я пропустил это, просматривая документацию (и ваш пост в блоге!). Есть ли способ изменить их размер программно только для плитки? –

+1

Обновление: найдено идеальное решение для изменения размера здесь http://amoore.katalyststudios.com/content/resizing-image-within-windows-8-app-c –

+0

Извините за задержку ... да, код как это изменяет размер изображений , Читайте в потоке, измените размер и запишите его. Рад, что вы все настроены. –

Смежные вопросы