それでは、Silverlightのサンプルアプリケーションを詳しく解説していきましょう。ここで使用するサンプルは、特集記事「Silverlightは次世代のJavaScriptフレームワーク?」で紹介したHello Worldサンプルを使用します。
サンプルのソースコードはこちらからダウンロードできるようになっています。Silverlightアプリケーションのファイル構成は特集記事でも説明したとおりですので、ここではソースコードを個別に詳しく解説していきたいと思います。なお、スタートページであるDefault.htmlに関しては決まり文句ですので、割愛します。
まずは、Silverlightオブジェクトの作成を行っているロジックから見ていきましょう。
function createSilverlight() |
ここでは、Silverlightオブジェクト作成関数であるcreateObject関数やcreateObjectEx関数を使用して、Silverlightオブジェクトの作成を行っております。処理としてはそれだけですが、その際にいくつかのパラメータの設定を行う必要があります。
createObject関数やcreateObjectEx関数には、主なものとして以下の表1のようなパラメータがありますので、参考にして設定してください。
パラメータ | 概要 | |
---|---|---|
source | XAMLのURLを指定 | |
parentElement | Silverlightオブジェクトの親要素に当たるHTML要素のIDを指定 | |
id | SilverlightオブジェクトのユニークなIDを指定。このIDを指定することでHTMLからSilverlightオブジェクトへアクセスすることが可能 | |
properties | Silverlightオブジェクトのための初期プロパティを設定。配列形式で複数の指定が可能(表2参照) | |
events | 初回に実行するコントロールイベントを指定。指定可能なイベントは、“onLoad”か“onError”のみ | |
initParams | ユーザー定義の初期パラメータを指定 | |
context | onLoadイベントハンドラへ渡すことのできるユニークなIDを指定 | |
プロパティ | 概要 | デフォルト値 | |
---|---|---|---|
width | 幅を指定。HTMLタグのwidthプロパティに相当 | 0 | |
height | 高さを指定。HTMLタグのheightプロパティに相当 | 0 | |
background | 背景色を指定。SilverlightオブジェクトのSettings.Backgroundプロパティに相当 | null(=白) | |
isWindowless | ウィンドウレス・コントロールとして表示するかを指定。SilverlightオブジェクトのSettings.Windowlessプロパティに相当 | false | |
frameRate | コントロールをレンダリングするフレーム毎秒の最大値を指定 | 24(最大値は64フレーム毎秒) | |
inplaceInstallPrompt | SilverlightプラグインがWebブラウザにインストールされていなかった場合、インプレースインストールプロンプトを表示するかを指定(標準インストールプロンプトがソフトウェアライセンス条項の画面を必ず表示してインストールを行うのに対して、インプレースインストールプロンプトはダイレクトにインストールできる点が異なる) | false | |
version | Silverlightオブジェクトを実行するために必要とする最小のバージョンを指定 | なし | |
ignoreBrowserVer | 実行するWebブラウザのタイプやバージョンの確認を無視するか指定 | false(=無視しない) | |
enableHtmlAccess | コンテンツがHTMLのコンテンツへアクセスすることを許可するか指定。SilverlightオブジェクトのSettings.EnableHtmlAccessプロパティに相当 | true(=許可する) | |
次に解説するのは、Silverlightのコアとなる画面を生成しているXAMLコードになります。
<Canvas |
SilverlightにおいてXAMLコードがアプリケーションの中心となりますので、ここでは基礎的な定義と初歩的な<TextBlock>タグについて解説します。なお、当サンプルでは、アニメーション、イベント(Page.xaml.jsも含む)、グラデーションなどを使用しておりますが、これらについては連載の中で詳しく説明していきます。
SilverlightにおけるXAMLは、必ずルート要素に<Canvas>タグを使用します。WPF(Windows Presentation Foundation)には、Windowsアプリケーション用の<Window>タグ、XAMLブラウザアプリケーション用の<Page>タグがありますが、Silverlightでは、常にHTMLページの一部の領域を使用するため、領域を指定する<Canvas>タグになります。
ルート要素には名前空間の指定が必要ですので、以下の定義を必ず追加しなければなりません。
この名前空間の指定以外は通常のタグと同様の指定方法になります。<Canvas>タグで指定可能なプロパティ、メソッド、イベントは表3にまとめましたが、その前にプロパティ、メソッド、イベントの指定方法について簡単に説明します。
プロパティの指定方法には3つあります。
1. タグ内にHTMLのように指定(主に値を指定する際に使用)
<Canvas width=”100” /> |
2. 子要素として定義して指定(主にオブジェクトを指定する際に使用)
<Canvas > |
3. ロジックにて指定
canvas.setValue("width",100); |
もしくは、
canvas.width = 100; |
メソッドはロジックから使用するのみです。
var width = canvas.getValue(“width”); |
1. タグ内にHTMLのように指定
<Canvas Loaded=”onLoaded” /> |
2. ロジックにて追加
canvas.addEventListener(“Loaded”, “onLoaded”); |
項目 | タグ | |
---|---|---|
プロパティ | Background, Canvas.Left、Canvas.Top、Canvas.ZIndex、Children、Clip、Cursor、Height、IsHitTestVisible、Name、Opacity、OpacityMask、RenderTransform、RenderTransformOrigin、Resources、Triggers、Visibility、Width | |
メソッド | AddEventListener、CaptureMouse、FindName、GetHost、GetParent、GetValue、ReleaseMouseCapture、RemoveEventListener、SetValue | |
イベント | GetFocus、KeyDown、KeyUp、Loaded、LostFocus、MouseEnter、MouseLeave、MouseLeftButtonDown、MouseLeftButtonUp、MouseMove | |
Silverlightで単数行テキストや複数行テキスト、マルチフォーマットテキストなどを表示するためには、軽量なオブジェクトである<TextBlock>タグを使用します。
使用方法としては、表示したいテキストをTextプロパティに指定するか、<TextBlock>タグで囲うだけです。<TextBlock>タグも同様に、指定可能なプロパティ、メソッド、イベントを表4にまとめましたので、参考にしてください。
項目 | タグ | |
---|---|---|
プロパティ | ActualHeight、ActualWidth、Canvas.Left、Canvas.Top、Canvas.ZIndex、Clip、Cursor、FontFamily、FontSize、FontStretch、FontStyle、FontWeight、Foreground、Height、Name、Opacity、OpacityMask、RenderTransform、RenderTransformOrigin、Resources、Text、TextDecorations、TextWrapping、Triggers、Visibility、Width | |
メソッド | AddEventListener、CaptureMouse、FindName、GetHost、GetParent、GetValue、ReleaseMouseCapture、RemoveEventListener、SetFontSource、SetValue | |
イベント | なし | |
Silverlightオブジェクトの生成は、基本的にJavaScriptを使用して行われますが、JavaScriptを使用せずにHTMLの<object>タグや<embed>タグを使用して行うこともできます。サンプルをこれらで指定すると、以下のようになります。
・<object>タグ
<object |
・<embed>タグ
<embed |
次のページでは、実際に作成したSilverlightアプリケーションを企業内でどのように配布するかを紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.