SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight 3徹底入門

Silverlight 3で作る業務アプリケーションの要
「ナビゲーションフレームワーク」

Silverlight 3徹底入門(5)

  • X ポスト
  • このエントリーをはてなブックマークに追加

ナビゲーションフレームワーク

 Silverlight 3ではナビゲーションフレームワークの登場により、画面遷移をSilverlightが提供する標準的な仕組みを利用して行うことが可能になりました。ナビゲーションフレームワークの特徴を以下に挙げます。

  • FrameコントロールとPageコントロールを利用した標準的な画面遷移
  • ページ内アンカーを利用したコンテンツへの直接リンク
  • Webブラウザーの履歴の記録
  • UriMappingを利用した柔軟なUriマッピング

 ナビゲーションフレームワークを利用した画面遷移は図2で示した方法を、簡単に使いやすくした方法ということができるでしょう。ナビゲーションフレームワークでは、メインページに配置されたFrameコントロールのSourceプロパティーを差し替えることで画面遷移を行います(図3)。

図3 ナビゲーションフレームワークを利用した画面遷移
図3 ナビゲーションフレームワークを利用した画面遷移

今回作成するサンプルアプリケーション

 ナビゲーションフレームワークというと、図4のようにVisual Studioであらかじめ用意されているナビゲーションアプリケーションのプロジェクトテンプレートで作成されるアプリケーションのイメージが強いですが、ナビゲーションフレームワークの本体は画面を格納するFrameコントロールと、Frameコントロール内に表示するPageコントロールからなります。

 ここではFrameコントロールとPageコントロールを使用し、ナビゲーションアプリケーションと同じようなアプリケーションを作成することで、ナビゲーションフレームワークに対する理解を深めていきます。

図4 ナビゲーションアプリケーションプロジェクト
図4 ナビゲーションアプリケーションプロジェクト

 今回は図5のような画面構成のアプリケーションを作成します。

 ページの上部にはアプリケーション全体で常に表示したいヘッダー情報を、左には各ページへのリンクを、真ん中にアプリケーションのメインとなるコンテンツを表示します。

図5 今回作成するページのレイアウト
図5 今回作成するページのレイアウト

 図5の構造を作るために、リスト1のページを作成しました。

 今回はこのページに対しナビゲーションフレームワークを使ってページ遷移機能を追加します。

リスト1 今回利用するページのメインとなるMainPage.xaml
<UserControl 
  x:Class="CodezineNavigation.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
  <StackPanel x:Name="LayoutRoot">
    <!-- ヘッダーパネル -->
    <Border Margin="5,5,5,0" BorderThickness="1" BorderBrush="Black">
      <StackPanel MinHeight="40"  x:Name="Headder"  >
        <TextBlock Text="ナビゲーションフレームワークサンプル" />
      </StackPanel>
    </Border>
    <StackPanel Orientation="Horizontal">
      <!-- メニューパネル -->
      <Border Margin="5,5,5,5" BorderThickness="1" BorderBrush="Black">
        <StackPanel MinWidth="75" MinHeight="150"></StackPanel>
      </Border>

      <!-- ナビゲーションフレームパネル -->
      <StackPanel Margin="0,5,5,5">
      </StackPanel>
    </StackPanel>
  </StackPanel>
</UserControl>

ページの追加

 ではナビゲーションフレームワークを利用したアプリケーションを作っていきましょう。まずは、フレームの内側に表示するページをプロジェクトに追加します。Visual StudioのソリューションエクスプローラーでViewsフォルダーを作成し、そのフォルダーに新しいページファイルを追加してください(プロジェクト構成については、コラム「プロジェクト構成」を参照してください)。

 図6ではViewフォルダーのコンテキストメニューから「新しい項目」を選択、Silverlightページを「TopPage.xaml」という名前をつけて作成しています。

図6 新しいページの追加
図6 新しいページの追加

 後で使用しますので、アプリケーションの概要を説明するための「AboutPage.xaml」も同様に追加しておいてください。各ページにはリスト3のように、現在どのページなのか分かるようにページのタイトルを表示しておきます。

リスト2 各ページのタイトル
<navigation:Page 
    略
    Title="TopPage Page">
    <StackPanel x:Name="LayoutRoot">
      <!-- ここをページによって変更する -->
      <TextBlock Text="トップページ" />
   </StackPanel>
</navigation:Page>

プロジェクト構成

 Silverlightに限らずプログラムを作成する上では、フォルダー構成を決めてXAMLファイルやクラスファイル、ロジックを記述するソースコードを配置することで、プロジェクトの見通しが良くなります。ナビゲーションアプリケーションのプロジェクトテンプレートで作成したプロジェクトでは図7のプロジェクト構成になります。

 

図7 ナビゲーションアプリケーションのプロジェクト構成
図7 ナビゲーションアプリケーションのプロジェクト構成

 Viewsフォルダーには各ページファイルを、Assetsフォルダーにはアプリケーション全体で利用するスタイルなどのリソースファイルを配置します。あくまでテンプレートとしての例の一つですので、必ずしも同じにする必要はありませんが、今回は同じようにViewsフォルダーを作成し、このフォルダーにページファイルを配置しています。

次のページ
フレームの追加

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlight 3徹底入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト かるあ (杉山 洋一)(カルア(スギヤマ ヨウイチ))

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4810 2010/02/10 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング