Я понимаю, что каждое приложение решает, где это сделать для себя. Обычно вы делаете это, когда вы также обновляете свой обычный пользовательский интерфейс с теми же данными - например, если ваше приложение является RSS-ридером, и вы только что загрузили новый элемент для отображения, вы также обновите свою плитку, разместив уведомление. В примере приложения JavaScript это делается из обработчиков событий для элементов управления для удобства.
Что касается кода для изменения плитки, он должен быть почти идентичен версии JavaScript, так как в обоих случаях вы используете Windows.UI.Notifications namespace. Следующее - очень простое приложение 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));
}
}
}
Не забывайте, что вам нужен широкий плитку для текста, чтобы показать - чтобы получить его, установить некоторые изображения для «Wide Logo» в пакете .appxmanifest.
Ах! Моя плитка все еще была квадратной. Изменил его на широкий, и он сработал. –