Я пытаюсь изменить цвет фона живых плиток в моем приложении Windows 8 во время выполнения. Это возможно? У кого-нибудь есть фрагмент кода?
Как изменить цвет фона живой плитки во время выполнения?
Ответы (3)
Цвет фона указывается в манифесте приложения. Таким образом, это не представляется возможным.
То же самое можно эмулировать, отправив пользовательское время во время выполнения с соответствующим фоновым изображением (для цвета). Это причудливый способ, но мой маленький ум может думать только о таком подходе.
Предположим, вы уже устранили проблему, но я опубликую эту информацию здесь, может быть полезной, если кто-то наткнется на эту тему.
Для основной плитки правильный ответ от Бруно Лемоса.
Для второстепенных плиток я бы использовал TileUpdateManager.CreateTileUpdaterForSecondaryTile(Tile2_ID).
Использование TileNotifications и TileUpdaterManager работает для меня мгновенно.
Используя шаблоны плиток, вам придется изменить некоторый код XML из шаблона, но вы также можете загрузить пакет NuGet NotificationsExtensions и сделать это следующим образом:
var tile2 = TileContentFactory.CreateTileSquare150x150PeekImageAndText01();
tile2.Branding = TileBranding.Name;
tile2.Image.Src = "ms-appx:///assets/Logo-transparent.png"; //Useful to have the same logo image with transparent background and other colors
tile2.TextHeading.Text = "Heading";
tile2.TextBody1.Text = "String1";
tile2.TextBody2.Text = "String2";
tile2.TextBody3.Text = "String3";
var doc = new XmlDocument();
doc.LoadXml(tile2.ToString());
var updater = TileUpdateManager.CreateTileUpdaterForSecondaryTile(tile2_id);
updater.EnableNotificationQueueForSquare150x150(true); //enables up to 5 different tile *animations* for 150 square icon, can be enabled for other sizes too
updater.Update(new TileNotification(doc) { Tag = "1" });
Приведенный выше код учитывает, что SecondaryTile был создан ранее.
Вы можете увидеть различные шаблоны для значков здесь: https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.notifications.tiletemplatetype.aspx
Вам нужно только изменить строку TileContentFactory.CreateNAMEOFTEMPLATE и заполнить различные поля строки/изображения.
Информацию о том, как EnableNotificationQueue иметь более одной анимации в плитке, можно найти здесь: https://msdn.microsoft.com/en-us/library/windows/apps/hh781199..aspx
Для основной плитки / плитки по умолчанию вы можете сделать то, что сказал @Tilak: создать уведомления об изображениях плитки и использовать TileUpdateManager.CreateTileUpdaterForApplication().Update для ее обновления.
Для дополнительных плиток выполните следующие действия:
- В манифесте приложения установите цвет фона на «прозрачный».
В манифесте приложения используйте изображения с прозрачным фоном
Теперь вы можете сделать это во время выполнения:
var tile = new SecondaryTile("YOUR_TILE_ID");
tile.VisualElements.BackgroundColor = Colors.Red;
await tile.UpdateAsync();
Проблема в том, что фон не обновляется сразу, и я не знаю, почему. Но вы можете увидеть эффект после выхода/входа, например. (проверено с использованием Windows 10)
Так что этот ответ неполный, но, надеюсь, может дать представление людям, приходящим сюда из Google, таким как я.