.NET TIPS

[Silverlight 2]Silverlightアプリケーションをフルスクリーンで表示するには?[C#、VB]

デジタルアドバンテージ 一色 政彦
2009/08/20

 Silverlightアプリケーションは、ページの一部または全体に埋め込む「埋め込みモード」が基本だが、Webブラウザの枠を超えて全画面で表示する「全画面表示モード」もサポートしている。全画面表示モードは、スクリーンいっぱいに広げて見やすくしたいケースで特に便利で、例えば画像や動画をスクリーン全体に広げて見せるという使い方ができる。

 次のサンプルでは、Silverlightアプリケーション上のボタンをクリックすると、Silverlightプラグインの埋め込みモードと全画面表示モードをトグルする(=切り替える)。

埋め込みモードと全画面表示モードをトグルするサンプル
ユーザーが[Esc]キーを押すと全画面表示モードは終了する。

 ただし、全画面表示モードにはいくつかの制限があるので、注意してほしい。

 具体的には、ユーザーの要求をきっかけにしたタイミング、例えばボタンがクリックされたタイミングなどでしか、全画面表示モードに移行できない。また、上のサンプルでも分かるように、TextBoxコントロールなどへのテキスト入力が行えない。これらの制限は、悪意のあるサイトが画面を偽装してパスワードや個人情報を盗もうとするのを防ぐためのセキュリティ的な配慮のようだ。

■フルスクリーン表示にする方法

 通常の埋め込みモードから全画面表示モードに切り替えるには、Contentクラス(System.Windows.Interop名前空間、System.Windows.dllアセンブリ)のオブジェクトのIsFullScreenプロパティをtrueに設定するだけだ。逆に埋め込みモードに戻すには、falseを設定すればよい。

 Contentオブジェクトは、次のプロパティから取得できる。

App.Current.Host.Content

 Silverlightアプリケーションを示すApplicationクラス(System.Windows名前空間)には、現在のApplicationオブジェクトを取得するための静的プロパティCurrentがある。上記コードの「App」は、そのApplicationクラスを継承したクラス(SilverlightApplication1名前空間)である。

 そして、AppクラスのCurrentプロパティからApplicationオブジェクトを取得し、そのHostプロパティからSilverlightHostクラス(System.Windows.Interop名前空間)のオブジェクトを取得する。そこからSilverlightコントロールの情報を取得/設定したり、オブジェクトを操作したりできる。

 今回は、SilverlightHostオブジェクトのContentプロパティを呼び出している。Contentプロパティでは、 Silverlightアプリケーションのコンテンツ領域に関するAPIが含まれるContentクラス(System.Windows.Interop 名前空間)のオブジェクトが取得できる。

 あとは、このContentオブジェクトが持つIsFullScreenプロパティをtrueに設定すれば、Silverlightアプリケーションのコンテンツ領域をフルスクリーンに拡張できる。

 なおAppクラスは、Visual Studioの「Silverlight アプリケーション」プロジェクト・テンプレートで自動生成されるクラス(ファイル)である。

 次のコードは実際に、ボタンがクリックされたときのイベント・ハンドラで、IsFullScreenプロパティをtrueやfalseに設定することにより、埋め込みモードと全画面表示モードをトグルするサンプル・コードである。IsFullScreenプロパティの値を取得すれば、全画面表示モード(=true)か埋め込みモード(=false)かを調べられる。このサンプル・コードでは、これを利用して、全画面表示モードと埋め込みモードをトグルさせる処理を実装している。

private void Button_Click(object sender, RoutedEventArgs e)
{
  // フルスクリーンの設定/解除を切り替える
  App.Current.Host.Content.IsFullScreen =
    !App.Current.Host.Content.IsFullScreen;
}
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
  ' フルスクリーンの設定/解除を切り替える
  App.Current.Host.Content.IsFullScreen = _
    Not App.Current.Host.Content.IsFullScreen
End Sub
埋め込みモードと全画面表示モードをトグルするサンプル・コード(上:C#、下:VB)

 ちなみに、埋め込みモードと全画面表示モードが切り替わった際には、FullScreenChangedイベントが発生するので、そのタイミングで特別な処理を行いたいときには、このイベントをハンドルすればよい。End of Article

カテゴリ:Silverlight 2 処理対象:ブラウザ
使用ライブラリ:SilverlightHostクラス(System.Windows.Interop名前空間)
使用ライブラリ:Contentクラス(System.Windows.Interop名前空間)
使用ライブラリ:Applicationクラス(System.Windows名前空間)

この記事と関連性の高い別の.NET TIPS
[Silverlight 2]Silverlightコントロールの実際のサイズを取得するには?
[Silverlight 2]JavaScriptコードからSilverlightのオブジェクトを利用するには?
[Silverlight 2]アプリケーションのホスト情報を取得するには?
[Silverlight 2]HTML要素クリック時にSilverlightのメソッドを実行するには?
[ASP.NET]WebPartsコントロールでパーソナライズ・ページを構築するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

@IT Special

- PR -

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH