13

タイル通知を使用して単純なWindows8メトロスタイルアプリをC#にまとめようとしていますが、機能させることができないようです。

私がまだ完全に理解できないのは、タイル通知を更新するためのコードがどこにあるべきかということです。Javascriptのサンプルを見てきましたが、C#アプリでどのように機能するのかわかりません。誰かがC#メトロアプリでタイルの更新が行われるべき場所に関するサンプルコードまたは簡単なヒントを持っていますか?

4

2 に答える 2

15

私の理解では、すべてのアプリが自分でこれを行う場所を決定します。通常、同じデータで通常のUIを更新するときはいつでもこれを行います。たとえば、アプリがRSSリーダーであり、表示する新しいアイテムをダウンロードしたばかりの場合は、ここでタイルも更新します。通知を投稿する。サンプルJavaScriptアプリでは、これは便宜上、コントロールのイベントハンドラーから実行されます。

タイルを変更するコードについては、どちらの場合もWindows.UI.Notifications名前空間を使用するため、JavaScriptバージョンとほぼ同じである必要があります。以下は、ボタンをクリックするとタイルを更新する非常にシンプルな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で「WideLogo」の画像を設定してください。

于 2011-09-18T20:40:15.127 に答える
1

必ず初期回転を横向きに変更し、Widelogoの画像を設定し、このメソッドを使用して有効期限とともにテキストを設定してください。

 void SendTileTextNotification(string text, int secondsExpire)
        {
            // Get a filled in version of the template by using getTemplateContent
            var tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideText03);

            // You will need to look at the template documentation to know how many text fields a particular template has       

            // get the text attributes for this template and fill them in
            var tileAttributes = tileXml.GetElementsByTagName(&quot;text&quot;);
            tileAttributes[0].AppendChild(tileXml.CreateTextNode(text));

            // create the notification from the XML
            var tileNotification = new TileNotification(tileXml);

            // send the notification to the app's default tile
            TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
        }

詳細な説明は次のとおりですhttp://www.amazedsaint.com/2011/09/hellotiles-simple-c-xaml-application.html

于 2011-09-18T20:45:45.490 に答える