今回作成するビヘイビアは、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.