次の方法で共有


更新プログラムのアクティブ化が保留中のトースト

PendingUpdate を使用して、トースト通知で複数ステップの対話を作成できます。 たとえば、次に示すように、後続のトーストが前のトーストからの応答に依存する一連のトーストを作成できます。

更新が保留中のトースト

重要

Desktop Fall Creators Update と通知ライブラリの 2.0.0 が必要です: 保留中の更新作業を表示するには、デスクトップ ビルド 16299 以降を実行している必要があります。 ボタンに PendingUpdate を割り当てるには、UWP Community Toolkit Notifications NuGet ライブラリのバージョン 2.0.0 以降を使用する必要があります。 PendingUpdate はデスクトップでのみサポートされ、他のデバイスでは無視されます。

前提条件

この記事では、実用的な知識を前提としています...

概要

アクティブ化後の動作として保留中の更新を使用するトーストを実装するには...

  1. トーストの背景のアクティブ化ボタンで、PendingUpdate のAfterActivationBehaviorを指定します。

  2. トーストを送信するときに Tag (および必要に応じて Group) を割り当てる

  3. ユーザーがボタンをクリックすると、バックグラウンド タスクがアクティブになり、トーストが保留中の更新状態で画面に保持されます

  4. バックグラウンド タスクで、同じ TagGroup を使用して、新しいコンテンツで新しいトーストを送信します

PendingUpdate の割り当て

バックグラウンドのアクティブ化ボタンで、 AfterActivationBehaviorPendingUpdate に設定します。 これは、BackgroundActivationType を持つボタンに対してのみ機能します。

new ToastContentBuilder()

    .AddText("Would you like to order lunch today?")

    .AddButton(new ToastButton("Yes", "action=orderLunch")
    {
        ActivationType = ToastActivationType.Background,

        ActivationOptions = new ToastActivationOptions()
        {
            AfterActivationBehavior = ToastAfterActivationBehavior.PendingUpdate
        }
    });

通知でタグを使用する

後で通知を置き換えるには、通知に Tag (および必要に応じて Group) を割り当てる必要があります。

// Create the notification
var notif = new ToastNotification(content.GetXml())
{
    Tag = "lunch"
};

// And show it
ToastNotificationManager.CreateToastNotifier().Show(notif);

トーストを新しいコンテンツに置き換える

ユーザーがボタンをクリックすると、バックグラウンド タスクがトリガーされ、トーストを新しいコンテンツに置き換える必要があります。 トーストを置き換えるには、同じ Tag Group で新しいトーストを送信するだけです。

ユーザーがトーストを既に操作しているため、ボタンのクリックに応じて、オーディオをサイレントに置き換えるすることを強くお勧めします。

// Generate new content
ToastContent content = new ToastContent()
{
    ...

    // We disable audio on all subsequent toasts since they appear right after the user
    // clicked something, so the user's attention is already captured
    Audio = new ToastAudio() { Silent = true }
};

// Create the new notification
var notif = new ToastNotification(content.GetXml())
{
    Tag = "lunch"
};

// And replace the old one with this one
ToastNotificationManager.CreateToastNotifier().Show(notif);