WPFやSilverlight、Windows Phone開発ではビヘイビアという便利な機能があります。ビヘイビアは、Expression Blendからはとても簡単に利用できるすばらしいものなのですが、Visual Studioから利用したい場合、XAMLを手書きするしか方法がありません。
また、多くのWindows Phone開発者はVisual Studioを得意としているものの、Expression Blendが苦手でビヘイビアの使いどころがよく分からないと聞きます。
今回は、ビヘイビアを徹底的に使い倒し、この機能でどのようなことができるのかを紹介します。
英和辞典でBehaviorを単語検索すると、以下のような意味が出てきます(goo辞書より引用)。
WPFやSilverlight、Windows Phoneの開発におけるビヘイビアは以下のように表せます。
もう少し噛み砕いて表現すると、「だれを」「どうしたときに」「だれの」「なにを」「どうするか」をExpression Blendのパネルで定義していくパーツです。
SourceName | image | だれを |
---|---|---|
EventName | Loaded | どうしたときに |
Value | Play | どうする |
Windows Phone用のビヘイビアはデフォルトで13種類あります。
それぞれできることが違い、求めたアクションや動作に応じたものを利用します。
まずは取りあえず使ってみましょう。初歩の初歩ですが、ビヘイビアだけで「Hello World!」アプリを作ってみます。今回使用するビヘイビアはChangePropertyActionだけです。ChangePropertyActionはコントロールのプロパティを変更するビヘイビアです。
まずExpression Blendを起動し、[Windows Phoneアプリケーション]プロジェクトを作成します。
[ContentPanel]を選択した状態で、コントロールバーから[TextBlock]をダブルクリックします。すると、TextBlockコントロールが設置されます。
[TextBlock]をダブルクリックして、TextBlockコントロールに名前を付けます。今回は「Text」とします。
同様にButtonコントロールを設置し、デザインビューでドラッグして移動します。
コントロールのアセットからビヘイビアを選択し、[ChangePropertyAction]を「Button」コントロールにドラッグ&ドロップします。
[ChangePropertyAction]を選択すると、[プロパティ]パネルが変化します。
今回は[ChangePropertyAction]プロパティを表のように定義します。
SourceName | [親](ここではButtonのこと) | だれを |
---|---|---|
EventName | Tap | どうしたときに |
TargetName | Text | だれの |
PropertyName | Text | なにを |
Value | Hello Blend | どうする |
実行しましょう。同じようにButtonをタップすると、TextBlockが「Hello Blend」に変わります。これがビヘイビアを使った「Hello World」アプリです。
Expression Blendは、こうしたビヘイビアを使った開発を得意とします。このビヘイビアはXAMLで記述されるので、Visual Studioでも手書きで利用可能ですが、Expression Blendほど簡単には使えません。「ビヘイビアを使うためだけにExpression Blend for Windows Phoneを利用してもよい」といっても過言ではないでしょう。
実際に「MainPage.xaml」は以下のようになります。これだけだと、たいした量ではないように思えますが、実際にアプリを開発していると、全部手書きしていくのは大変ですね。
<phone:PhoneApplicationPage xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:ec="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800" x:Class="WindowsPhoneApplication26.MainPage" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" shell:SystemTray.IsVisible="True"> <!--LayoutRoot は、すべてのページ コンテンツが配置されるルート グリッドです--> <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!--TitlePanel には、アプリケーションの名前とページ タイトルが含まれています。--> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <!--ContentPanel - 追加のコンテンツを配置します--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock x:Name="textBlock" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Text="TextBlock"/> <Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,31,0,0"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <ec:ChangePropertyAction TargetName="textBlock" PropertyName="Text" Value="Hello Blend"/> </i:EventTrigger> </i:Interaction.Triggers> </Button> </Grid> </Grid> </phone:PhoneApplicationPage>
簡単な使い方を紹介したところで、Expression Blendとビヘイビアの実力をお見せします。ゲームを1つ作成したので、次ページからは作り方を解説します。
Copyright © ITmedia, Inc. All Rights Reserved.