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"宽标识".