今回作成するビヘイビアは、URLをプロパティに指定し、イベントが実行されればInternet Explorerで開くというものです。
プロジェクトを右クリックし、[Visual Studioで編集する]を選択します。すると、デザイナ向けのExpression Blendからコーディング用のツール「Visual Studio」が立ち上がります。
今回はビヘイビアを他のプロジェクトでも再利用できるよう、新しいプロジェクトを作成します。ソリューションを右クリックし、[追加]→[新しいプロジェクト]を選択します。
Windows Phone クラスライブラリを選択し、プロジェクト名はOpenTasksBehaviorLibraryとしました。
プロジェクトが作成されました。
OpenTasksBehaviorLibraryプロジェクトが作成できたら、ビヘイビアを利用するための「System.Windows.Interactivity.dll」「Microsoft.ExpressionInteractions.dll」、Tasksを利用するための「Microsoft.Phone.dll」を追加します。
また、作成したOpenTasksBehaviorLibraryプロジェクトをatItRSSプロジェクトの参照に追加します。
Class1.csのファイル名を「OpenWebBrowserTaskAction.cs」とします。OpenWebBrowserTaskAction.csを開くと、以下のように記述されています。
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace OpenTasksBehaviorLibrary
{
public class OpenWebBrowserTaskAction
{
}
}
Public class OpenWebBrowserTaskActionがTriggerActionのクラスだと記述し、System.Windows.Interactivityをusingに追加します。
「TriggerAction」にマウスカーソルを合わせ、抽象クラスを作成します。
すると、以下のようにInvokeメソッドが作成されます。このInvokeメソッドが処理の実体です。
namespace OpenTasksBehaviorLibrary
{
public class OpenWebBrowserTaskAction : TriggerAction
{
protected override void Invoke(object parameter)
{
throw new NotImplementedException();
}
}
}
では、InovokeメソッドにWebBrowserTaskを開く処理を記述しましょう。
namespace OpenTasksBehaviorLibrary
{
public class OpenWebBrowserTaskAction : TriggerAction
{
protected override void Invoke(object parameter)
{
string url = string.Format(this.Url);
Uri uri = new Uri(url);
var task = new Microsoft.Phone.Tasks.WebBrowserTask();
task.Uri = uri;
task.Show();
}
}
}
TasksのUriプロパティに「this.Url」を指定し、「task.Show();」でInternetExplorerを開きます。
this.UrlはExpression Blendのパネルから定義できるように、OpenWebBrowserTaskActionのプロパティとして公開します。「Url」という名前のプロパティをOpenWebBrowserTaskActionのプロパティとして登録しています。
public static readonly DependencyProperty UrlProperty =
DependencyProperty.Register(
"Url",
typeof(string),
typeof(OpenWebBrowserTaskAction),
new PropertyMetadata(string.Empty));
最後に、this,Urlのプロパティを定義しましょう。
public string Url
{
get { return (string)GetValue(UrlProperty); }
set { SetValue(UrlProperty, value); }
}
OpenWebBrowserTaskAction.cs全文です。
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Interactivity;
namespace OpenTasksBehaviorLibrary
{
public class OpenWebBrowserTaskAction : TriggerAction
{
public static readonly DependencyProperty UrlProperty =
DependencyProperty.Register(
"Url",
typeof(string),
typeof(OpenWebBrowserTaskAction),
new PropertyMetadata(string.Empty));
public string Url
{
get { return (string)GetValue(UrlProperty); }
set { SetValue(UrlProperty, value); }
}
protected override void Invoke(object parameter)
{
string url = string.Format(this.Url);
Uri uri = new Uri(url);
var task = new Microsoft.Phone.Tasks.WebBrowserTask();
task.Uri = uri;
task.Show();
}
}
}
コードが書けたら、一度ビルドしましょう。次ページでは最後に、Expression Blendに戻って自作したビヘイビアを、このサンプルに組み込みます。
Copyright © ITmedia, Inc. All Rights Reserved.