トースト通知
トースト通知と呼ばれるインターフェイスは、ユーザーにメールの受信や検索結果を知らせる方法です。通常のポップアップダイアログなどに比べ、ユーザーの作業を中断せずに必要な情報を通知できるので、最近のアプリケーションでは多く取り入れられています。
Chromeの拡張機能である、Gmail Notifierをインストールすると、Gmailで新着があった場合に図7のようなウインドウがポップアップして、ユーザーに通知してくれます。

Silverlightでは、NotificationWindowクラスを使うことで、ブラウザ外実行時に限り、OSに対してトースト通知を表示させる仕組みを持っています。
リスト5は、テキストボックスに入力された書籍名をAmazonのAPIで検索して、リスト6のウインドウを使ってトースト通知している例です。
// 通知用ウインドウのデータ定義
public class NotifyMessage
{
public string Title { get; set; }
public string Message { get; set; }
}
// トースト通知
if (Application.Current.IsRunningOutOfBrowser)
{
// 1.通知用ウインドウの作成
var contents = new NotifyPopup {
DataContext = new NotifyMessage {
Title = "検索結果",
Message = string.Format("{0}の検索結果{1}件", bookName.Text, result.Count()),
}
};
// 2.通知の設定
var notify = new NotificationWindow {
Content = contents,
Height = 50,
Width = 200,
};
notify.Show(3 * 1000);
}
トースト通知を行うための手順は、以下の2つです。
- 通知用のウインドウを作成する
- NotificationWindowクラスの設定
トースト通知で表示するウインドウは、通常のSilverlightのコントロールです。ここでは、リスト6のユーザーコントロールのインスタンスを作成し、検索結果をDataContextにバインドしています。
1で作成したウインドウをContentに設定し、通知ウインドウの高さと幅を設定します。1のコントロールの側に設定してあったとしても、通知ウインドウ側に高さと幅を設定しないと、ウインドウが表示されないので注意してください。
設定が終わったら、Showメソッドで表示時間を指定して、通知ウインドウを表示します。
<UserControl x:Class="SilverlightApplication1.NotifyPopup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="50" d:DesignWidth="200">
<StackPanel x:Name="LayoutRoot" Background="#FF99CCFF" Height="50" Width="200">
<TextBlock Height="15" Width="200" Text="{Binding Title}" />
<StackPanel Background="#FF99FFFF">
<TextBlock Height="35" Width="200" Text="{Binding Message}" />
</StackPanel>
</StackPanel>
</UserControl>
リスト5とリスト6を実行すると、図8のようにトースト通知が表示されたことが確認できると思います。

まとめ
今回は、Silverlight 4で拡張されたブラウザ外実行のうち、権限の昇格が必要ない機能に絞って解説を行いました。次回は、権限の昇格が必要な信頼されたアプリケーションでは、どのような機能が利用可能かを解説します。
