Насколько я понимаю, каждое приложение решает, где это сделать для себя. Обычно вы делаете это всякий раз, когда обновляете свой обычный пользовательский интерфейс теми же данными, например если ваше приложение предназначено для чтения RSS и вы только что загрузили новый элемент для отображения, вы также можете обновить свою плитку, опубликовав уведомление. В примере приложения JavaScript это делается из обработчиков событий для элементов управления для удобства.
Что касается кода для изменения плитки, он должен быть практически идентичен версии JavaScript, поскольку в обоих случаях вы используете пространство имен Windows.UI.Notifications . Ниже приведено очень простое приложение на C #, которое обновляет плитку при нажатии кнопки. XAML:
<UserControl x:Class="TileNotificationCS.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
d:DesignHeight="768" d:DesignWidth="1366">
<StackPanel x:Name="LayoutRoot" Background="#FF0C0C0C">
<TextBox x:Name="message"/>
<Button x:Name="changeTile" Content="Change Tile" Click="changeTile_Click" />
</StackPanel>
</UserControl>
и код:
using System;
using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;
using Windows.UI.Xaml;
namespace TileNotificationCS
{
partial class MainPage
{
TileUpdater tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication();
public MainPage()
{
InitializeComponent();
}
private void changeTile_Click(object sender, RoutedEventArgs e)
{
XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideText01);
XmlElement textElement = (XmlElement)tileXml.GetElementsByTagName("text")[0];
textElement.AppendChild(tileXml.CreateTextNode(message.Text));
tileUpdater.Update(new TileNotification(tileXml));
}
}
}
Не забывайте, что для отображения текста вам нужна широкая плитка - чтобы получить ее, задайте какое-нибудь изображение для «Широкого логотипа» в Package.appxmanifest.