トースト通知内の進行状況バーを使用すると、ダウンロード、ビデオ レンダリング、演習の目標など、実行時間の長い操作の状態をユーザーに伝えます。
Von Bedeutung
Creators Update と通知ライブラリの 1.4.0が必要です。トーストで進行状況バーを使用するには、SDK 15063 をターゲットとし、ビルド 15063 以降を実行している必要があります。 トーストのコンテンツに進行状況バーを作成するには、 UWP Community Toolkit Notifications NuGet ライブラリ のバージョン 1.4.0 以降を使用する必要があります。
トースト内の進行状況バーは、"不確定" (特定の値がなく、アニメーション化されたドットは操作が発生したことを示します) または "確定" (60%など、バーの特定の割合が塗りつぶされます) のいずれかです。
重要な API: NotificationData クラス、 ToastNotifier.Update メソッド、 ToastNotification クラス
注
トースト通知で進行状況バーをサポートするのは Desktop のみです。 他のデバイスでは、進行状況バーが通知から削除されます。
以下の画像は、関連するすべてのプロパティにラベルが付けられた確定進行バーを示しています。

プロパティ | タイプ | 必須 | 説明 |
---|---|---|---|
タイトル | string または BindableString | 偽り | 省略可能なタイトル文字列を取得または設定します。 データ バインディングをサポートします。 |
価値 | double または AdaptiveProgressBarValue または BindableProgressBarValue | 偽り | 進行状況バーの値を取得または設定します。 データ バインディングをサポートします。 既定値は 0 です。 0.0から1.0の範囲のdouble、AdaptiveProgressBarValue.Indeterminate 、またはnew BindableProgressBarValue("myProgressValue") のいずれかを指定できます。 |
ValueStringOverride | string または BindableString | 偽り | 既定のパーセンテージ文字列の代わりに表示される省略可能な文字列を取得または設定します。 これが指定されていない場合は、"70%" のようなものが表示されます。 |
地位 | string または BindableString | ほんとう | 左側の進行状況バーの下に表示される状態文字列 (必須) を取得または設定します。 この文字列は、"Downloading..." のような操作の状態を反映している必要があります。または "Installing..." |
上記の通知を生成する方法を次に示します。...
new ToastContentBuilder()
.AddText("Downloading your weekly playlist...")
.AddVisualChild(new AdaptiveProgressBar()
{
Title = "Weekly playlist",
Value = 0.6,
ValueStringOverride = "15/26 songs",
Status = "Downloading..."
});
ただし、進行状況バーの値を動的に更新して、実際に "ライブ" にする必要があります。 これを行うには、データ バインディングを使用してトーストを更新します。
データ バインディングを使用してトーストを更新する
データ バインディングの使用には、次の手順が含まれます。...
- データ バインド フィールドを利用するトースト コンテンツを作成する
- タグ(および必要に応じて グループ)を の ToastNotification に割り当てます
- ToastNotification で初期データ値を定義する
- トーストを送信する
- タグとグループを使用して新しい値でデータ値を更新する
次のコード スニペットは、手順 1 から 4 を示しています。 次のスニペットでは、トースト のデータ値 を更新する方法を示します。
using Windows.UI.Notifications;
using Microsoft.Toolkit.Uwp.Notifications;
public void SendUpdatableToastWithProgress()
{
// Define a tag (and optionally a group) to uniquely identify the notification, in order update the notification data later;
string tag = "weekly-playlist";
string group = "downloads";
// Construct the toast content with data bound fields
var content = new ToastContentBuilder()
.AddText("Downloading your weekly playlist...")
.AddVisualChild(new AdaptiveProgressBar()
{
Title = "Weekly playlist",
Value = new BindableProgressBarValue("progressValue"),
ValueStringOverride = new BindableString("progressValueString"),
Status = new BindableString("progressStatus")
})
.GetToastContent();
// Generate the toast notification
var toast = new ToastNotification(content.GetXml());
// Assign the tag and group
toast.Tag = tag;
toast.Group = group;
// Assign initial NotificationData values
// Values must be of type string
toast.Data = new NotificationData();
toast.Data.Values["progressValue"] = "0.6";
toast.Data.Values["progressValueString"] = "15/26 songs";
toast.Data.Values["progressStatus"] = "Downloading...";
// Provide sequence number to prevent out-of-order updates, or assign 0 to indicate "always update"
toast.Data.SequenceNumber = 1;
// Show the toast notification to the user
ToastNotificationManager.CreateToastNotifier().Show(toast);
}
次に、 データ 値を変更する場合は、 Update メソッドを使用して、トースト ペイロード全体を再作成せずに新しいデータを提供します。
using Windows.UI.Notifications;
public void UpdateProgress()
{
// Construct a NotificationData object;
string tag = "weekly-playlist";
string group = "downloads";
// Create NotificationData and make sure the sequence number is incremented
// since last update, or assign 0 for updating regardless of order
var data = new NotificationData
{
SequenceNumber = 2
};
// Assign new values
// Note that you only need to assign values that changed. In this example
// we don't assign progressStatus since we don't need to change it
data.Values["progressValue"] = "0.7";
data.Values["progressValueString"] = "18/26 songs";
// Update the existing notification's data by using tag/group
ToastNotificationManager.CreateToastNotifier().Update(data, tag, group);
}
トースト全体を置き換える代わりに Update メソッドを使用すると、トースト通知がアクション センターの同じ位置に留まらず、上下に移動することもできなくなります。 進行状況バーがいっぱいになる間に、トーストが数秒ごとにアクション センターの上部にジャンプし続けた場合、ユーザーは非常に混乱します。
Update メソッドは列挙型 NotificationUpdateResult を返します。これにより、更新が成功したかどうか、または通知が見つからなかったかどうかを確認できます (これは、ユーザーが通知を無視した可能性が高く、通知への更新の送信を停止する必要があることを意味します)。 進行状況の操作が完了するまで (ダウンロードが完了したときなど)、別のトーストをポップすることはお勧めしません。
データ バインディングをサポートする要素
トースト通知の次の要素は、データ バインディングをサポートしています
- AdaptiveProgress のすべてのプロパティ
- 最上位の AdaptiveText 要素の Text プロパティ
通知を更新または置換する
Windows 10 以降では、同じ
交換 | 更新中 | |
---|---|---|
アクション センターでの位置 | 通知をアクション センターの上部に移動します。 | アクション センター内で通知を残します。 |
コンテンツの修正 | トーストのすべてのコンテンツ/レイアウトを完全に変更できます | データ バインディングをサポートするプロパティ (進行状況バーと最上位レベルのテキスト) のみを変更できます |
ポップアップ として再表示される |
SuppressPopup を false に設定した場合(または true に設定してアクションセンターに静かに送信する場合)、トーストポップアップとして再表示されることがあります。 |
ポップアップとして再表示されません。トーストのデータはアクション センター内で静かに更新されます。 |
ユーザーが を無視した | ユーザーが前の通知を無視したかどうかに関係なく、置換トーストは常に送信されます | ユーザーがトーストを閉じると、トーストの更新は失敗します |
一般に、更新は役立ちます…
- 短時間で頻繁に変更され、ユーザーの注意を引く必要がない情報
- トースト コンテンツの微妙な変更 (50% から 65% への変更など)
多くの場合、一連の更新が完了した後 (ファイルがダウンロードされた場合など)、最後の手順に置き換えることをお勧めします。...
- 最終的な通知には、進行状況バーの削除、新しいボタンの追加など、レイアウトが大幅に変更される可能性があります。
- ユーザーはダウンロードの進行状況に興味がないため、保留中の進行状況通知を無視した可能性があります。しかし、操作が完了したときには、ポップアップトーストで通知を受け取りたいと思っています。
関連トピック
- GitHubで完全なコードサンプルを参照してください
- トーストコンテンツ ドキュメンテーション
Windows developer