C#中的Metro Tile通知

Ric*_*nks 13 c# windows-8 windows-runtime windows-store-apps

我正在尝试在c#中使用平铺通知组合一个简单的Windows 8 metro风格的应用程序,但我似乎无法让它们正常工作.

我还不太清楚的是更新磁贴通知的代码应该驻留在哪里.我已经看过Javascript示例,但我没有看到它在C#应用程序中是如何工作的.有没有人得到一些示例代码或快速提示在C#metro应用程序中应该发生磁贴更新?

Pav*_*aev 15

我的理解是每个应用程序都决定在哪里为自己做这件事.通常情况下,每当您使用相同的数据更新普通用户界面时,您都会这样做 - 例如,如果您的应用程序是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>
Run Code Online (Sandbox Code Playgroud)

和代码背后:

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));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不要忘记,你需要一个广泛的瓦片文字展现出来 - 得到它,设置一些图像在Package.appxmanifest"宽标识".