次の方法で共有


Blend を使用した初めての Windows ストア アプリの作成、パート 2: 詳細ページ (XAML と C#)

Blend for Visual Studio の XAML デザイン ツールを使用すると、Windows ストア アプリをよりすばやく効率的に開発できます。 このチュートリアルでは、PickaFlick という簡単なアプリのビルドについて説明します。このアプリでは、ロッテン トマトの API を使用して生成される新しいムービーの一覧を参照できます。

Blend の PickaFlick アプリ

サンプル ギャラリーからこのプロジェクトをダウンロードすると、コードだけでなく、アセットもすべて確認できるため、作業を進めながらプロジェクトをビルドできます。

注意

このアプリを実行するには、ロッテン トマトに登録してキーを取得し、そのキーをコードに貼り付ける必要があります。

このチュートリアルのパート 1 では、PickaFlick のホーム ページを作成しました。 パート 2 では、次の方法について説明します。

項目テンプレートをプロジェクトに追加する

プロジェクト テンプレートに加えて、Blend と Visual Studio のいずれにも項目テンプレートが用意されています。項目テンプレートには一般的なコードが含まれていて、 アプリ開発を高速化するためにプロジェクトに簡単に追加できます。 「アプリ開発を高速化するためのテンプレート」を参照してください。

PickaFlick アプリの場合、既存のプロジェクトに空白のページの項目テンプレートを追加します。 このページはアプリのムービー表示ページになります。

空白のページの項目テンプレートを追加するには

  1. [プロジェクト] パネルで、プロジェクト ファイルを右クリックし、[新しいアイテムの追加] をクリックします。

    [新しいアイテム] ダイアログ ボックスが表示されます。

    Blend - 新しいアイテム テンプレート - XAML

  2. 項目テンプレートの一覧で [空白のページ] をクリックします。

  3. [名前] ボックスに「MovieDisplay.xaml」と入力し、[OK] をクリックして項目テンプレートを追加します。

次は、MovieDisplay.xaml の背景を変更します

MovieDisplay.xaml の背景を変更するには

  1. [オブジェクトとタイムライン] パネルの [Grid] をクリックします。

  2. [プロパティ] パネルの [ブラシ] カテゴリで、[単色ブラシ] アイコン  をクリックします。

  3. [16 進数値] ボックスに「#D5BF9A」と入力し、Enter キーを押します。

    Blend の [プロパティ] パネル - [背景のプロパティ]

    これで、コード ビューでは Grid タグに Background="#FFD5BF9A" 属性が追加されます (Alpha 値は既定で 100% つまり FF に設定されます)。デザイン サーフェイスでは新しい背景色が表示されます。

Visual Studio との間で切り替えを行う

JSON を .NET オブジェクトに変換して、C# でビルドされた Windows ストア アプリで利用できるようにするには、PickaFlick アプリに JSON シリアライザーが必要です。 JSON シリアライザーは独自に記述するか、Microsoft Visual Studio の NuGet Package Manager を使用してダウンロードすることができます。 Blend から Visual Studio に切り替えると、この操作を簡単に実行できます。

次に示す手順では、Visual Studio に切り替えて Json.NET の JSON シリアライザーをダウンロードし、変更内容を保存します。その後、Blend に戻って作業を続行します。

NuGet Package Manager を使用して Json.NET をインストールするには

  1. [プロジェクト] パネルで、PickaFlick を右クリックし、[Visual Studio で編集] をクリックします。

    Visual Studio で PickaFlick プロジェクトが開きます。 ファイルの再読み込みを求めるメッセージが表示されたら、[すべて再読み込み] をクリックします。

    ヒント

    このチュートリアルのパート 1 で Visual Studio を既に開いているため、Visual Studio は [Visual Studio で編集] のクリック後に Blend の後ろに隠れている場合があります。

  2. ソリューション エクスプローラーで、プロジェクト ファイルを右クリックし、[NuGet パッケージの管理] をクリックします。

    Visual Studio - [NuGet パッケージの管理] - XAML

  3. [NuGet パッケージの管理] ダイアログ ボックスで、[検索] ボックスに「Json.Net」と入力します。 Enter キーを押します。

  4. [結果] ボックスの一覧で、Json.NET の右側にある [インストール] ボタンをクリックします。

    Visual Studio の [NuGet パッケージの管理] ダイアログ ボックス

  5. パッケージのインストールが完了した後、[閉じる] をクリックします。

    Json.NET のホーム ページがドキュメント ウィンドウに表示され、Newtonsoft.Json への参照がソリューション エクスプローラーReferences フォルダーに表示されます。

PickaFlick コードをプロジェクトに追加するには

PickaFlick アプリのコードはロッテン トマト Web サイトからデータを取得し、取得したデータから .NET オブジェクトをビルドします。これらのオブジェクトはアプリで直接利用できます。

コードをプロジェクトに追加するには

  1. ソリューション エクスプローラーを右クリックし、[追加] をポイントして、[新しいフォルダー] をクリックします。

    Visual Studio - [新しいフォルダーの追加]

  2. ソリューション エクスプローラーで、新しいフォルダーをクリックし、「DataModel」と入力します。

    Visual Studio - データ モデル フォルダー

  3. DataModel フォルダーを右クリックし、[追加] をポイントして、[新しい項目] をクリックします。または、Ctrl + Shift + A キーを押します。

  4. [新しい項目の追加] ダイアログ ボックスで、[クラス] をクリックし、「MovieData.cs」と入力します。 [追加] をクリックします。

  5. MovieData.cs で、class MovieData {} を次のコードに置き換えます。

    // This class represents a movie. It contains properties the describe the movie.
        public class MovieData
        {
            public MovieData(string title, string summary, string image)
            {
                this.Title = title;
                this.Summary = summary;
                this.Image = image;
    
            }
            public string Title { get; set; }
            public string Summary { get; set; }
            public string Image { get; set; }
        }
    
  6. Ctrl + Shift + A キーを押します [クラス] が選択されていることを確認します。 [新しい項目の追加] ダイアログ ボックスで、[クラス] をクリックし、「PickaFlickQuery.cs」と入力します。 [追加] をクリックします。

  7. PickaFlickQuery.cs で、using System.Threading.Tasks; の後ろに次のコードを追加します。

    using System.IO;
    using System.Runtime.InteropServices.WindowsRuntime;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using System.Collections.ObjectModel;
    using System.Net;
    using System.Net.Http;
    using Newtonsoft.Json;
    using System.IO.Compression;
    
  8. class PickaFlickQuery {} を次のコードに置き換えます。

        public class PickaFlickQuery
        {
            protected Uri Uri { get; private set; }
            // A collection class used to store a list of MovieData objects.
            public ObservableCollection<MovieData> results = new ObservableCollection<MovieData>();
            private bool hasExecutedQuery;
    
            public PickaFlickQuery(Uri uri)
            {
                this.Uri = uri;
            }
    
            // Executes a query to obtain information about movies.
            // This property also stores the movies in a collection class.
            public ObservableCollection<MovieData> Results
            {
                get
                {
                    if (!hasExecutedQuery)
                    {
                        this.ExecuteQuery();
                    }
    
                    return this.results;
                }
            }
    
            // Calls a service to obtain a list of movies. This method stores each movie
            // in a collection object.
            private async void ExecuteQuery()
            {
                try
                {          
                    HttpClient httpClient = new HttpClient();
    
                    var response = await httpClient.GetAsync(this.Uri);
    
                    string responseText = "";
    
                    IEnumerable<string> headerValues = Enumerable.Empty<string>();
    
                    if (response.Content.Headers.TryGetValues("Content-Encoding", out headerValues))
                    {
                        foreach (string headerValue in response.Content.Headers.GetValues("Content-Encoding"))
                        {
                            if (headerValue == "gzip")
                            {
                                using (var responseStream = await response.Content.ReadAsStreamAsync())
                                using (var decompressedStream = new GZipStream(responseStream, CompressionMode.Decompress))
                                using (var streamReader = new StreamReader(decompressedStream))
                                {
                                    responseText = streamReader.ReadToEnd();
                                }
                            }
                        }   
                    }
                    if (responseText == "")
                    {
                        var stream = await response.Content.ReadAsStreamAsync();
                        var streamReader = new StreamReader(stream);
                        responseText = streamReader.ReadToEnd();
                    }
    
                
                    // Convert the stream to JSON so that it is easier to iterate through
                    // each item in the stream.
                    dynamic myObj = JsonConvert.DeserializeObject(responseText);
                    dynamic movies = myObj.movies;
    
                    // Iterate through the collection of JSON objects to obtain information
                    // each movie in the collection.
                    foreach (dynamic movie in movies)
                    {
                        string title = movie.title;
                        string summary = movie.synopsis;
                        string image = movie.posters.detailed;
    
                        // Create a Moviedata object by using movie information and add 
                        // that object to a collection.
                        results.Add(new MovieData(title, summary, image));
                     }
                 
                    hasExecutedQuery = true;
                }
                catch (Exception)
                {
                    hasExecutedQuery = false;
                    showErrorMessage();
                }
            }
            private async void showErrorMessage()
            {
                var msg = new Windows.UI.Popups.MessageDialog
                    ("The service is unavailable or there was a problem with the service.");
    
                msg.Commands.Add(new Windows.UI.Popups.UICommand("Try again?"));
    
                msg.Commands.Add(new Windows.UI.Popups.UICommand("I'll try again later."));
    
                msg.DefaultCommandIndex = 0;
                msg.CancelCommandIndex = 1;
    
                var results = await msg.ShowAsync();
    
                if (results.Label == "I'll try again later.")
                {
                    hasExecutedQuery = true;
                    this.Results.Clear();
                }
                else
                {
                    hasExecutedQuery = false;
                    this.Results.Clear();
                }
    
    
            }
    
        }
    
  9. Ctrl + Shift + A キーを押します [クラス] が選択されていることを確認します。 [新しい項目の追加] ダイアログ ボックスで、[クラス] をクリックし、「PickaFlickViewModel.cs」と入力します。 [追加] をクリックします。

  10. PickaFlickViewModel.cs で、class PickaFlickViewModel {} を次のコードに置き換えます。

    // Provides an object that returns movie data. You can bind to this class in the designer.
        // For example, by referencing this class in the ItemSource property of a GridView control. 
        public class PickaFlickViewModel
        {
    // A Rotten Tomatoes API key is required. See https://go.microsoft.com/fwlink/?LinkId=313841 
            private static readonly string apikey = "Insert API Key Here";
            private static readonly string baseUrl = "http://api.rottentomatoes.com/api/public/v1.0";
            private static readonly string moviesSearchUrl = baseUrl + "/lists/movies/box_office.json?apikey=" + apikey;
    
            private static readonly Uri uri = new Uri(moviesSearchUrl);
    
            private readonly PickaFlickQuery query = new PickaFlickQuery(uri);
            
            // Property that returns a collection of MovieData objects. 
            public PickaFlickQuery Query
            {
                get
                {
                    return this.query;
                }
            }
        }
    

    重要

    ロッテン トマト API キーがある場合は、"Insert API Key Here" というテキストをそのキーに置き換えます。キーがないとアプリは想定どおりに動作しません。

  11. Ctrl キーと Shift キーを押しながら S キーを押してすべての変更を保存し、Blend に戻ります。

  12. Blend で、プロジェクトを再読み込みするかどうかを尋ねるメッセージが表示されます。 [はい] をクリックします。

    Blend のファイルの再読み込みメッセージ

DataContext を設定する

DataContext を設定することで、アプリに表示されるオブジェクトのソース データを指定します。

DataContext を設定するには

  1. Ctrl + B キーを押してプロジェクトをビルドすると、Visual Studio で行った変更が Blend で使用できるようになります。

  2. ドキュメント ウィンドウの上部にある [MovieDisplay.xaml] タブをクリックして、MovieDisplay.xaml が開いている状態にします。 [オブジェクトとタイムライン] パネルの [Grid] をクリックします。

  3. [プロパティ] パネルで、[DataContext] の右側にある [新規] をクリックします。

    Blend - [プロパティ] パネル - DataContext

  4. [オブジェクトの選択] ダイアログ ボックスで、[PickaFlickViewModel] をクリックします。 [OK] をクリックします。

    ヒント

    リストが長すぎて見にくい場合は、ダイアログ ボックスの左下隅にある [すべてのアセンブリを表示する] チェック ボックスをオフにします。

    Blend - DataContext - [オブジェクトの選択] ダイアログ ボックス

データのビューを作成する

ムービー アプリのデータを表示するデータ バインディング GridView は簡単に作成できます。そのためには、[データ] パネルの DataContext セクションから Results ノードをデザイン サーフェイスにドラッグします。 GridView コントロールおよび関連付けられた DataTemplate が自動的に作成され、データがデザイン サーフェイスに表示されます。

PickaFlick アプリでは GridView コントロールを使用しません。 FlipView コントロールを使用します。これにより、リスト内の項目を簡単にめくることができるようになります。 このビューはすばやく作成できます。そのためには、FlipView をプロジェクトに追加し、[オブジェクトとタイムライン] パネルで [結果] ノードを直接 FlipView にドラッグします。

注意

データのグリッド ビューを作成し、その後で削除しても、元の DataTemplate は XAML に残っています。データの追加のグリッド ビューを作成した場合は、別の DataTemplate が作成されて、その x:Key 値に数値が付加されます。たとえば、最初の DataTemplate の x:Key 属性が MovieTemplate の場合、2 番目の DataTemplate の x:Key は MovieTemplate1 になります。

FlipView コントロールを使用してデータのビューを作成するには

  1. [アセット] パネルで、[コントロール] をクリックし、[FlipView] をダブルクリックします。

    Blend - [資産] - [FlipView]

  2. [データ] パネルの [データ コンテキスト] セクションで [結果: (MovieData)] をクリックしてドラッグし、[オブジェクトとタイムライン] パネルで FlipView コントロールにドロップします。

    ヒント

    [結果] ノードが表示されていない場合は、そのノードが見つかるまで [データ コンテキスト] セクションでノードを展開します。

    Blend - [オブジェクトとタイムライン] パネル - FlipView

    データが FlipView コントロール内のデザイン サーフェイスに表示されます。 これで、データのレイアウトをカスタマイズする準備ができました。

    Blend - デザイン サーフェイス - FlipView

    ヒント

    未承認のアクセス例外がトリガーされ、デザイン サーフェイスに表示されている場合、API キーを再確認し、そのキーがコードに正しく入力されていることを確認してください。

データ ビューのスタイルを設定する

Flipview は適切な位置に表示され、データが読み込まれますが、ムービーは正しく表示されません。 生成されたデータ テンプレートのスタイルを設定して、想定した見栄えでデータが表示されるようにしてから、データ バインディングを絞り込んで、必要なデータが表示されるようにすることができます。

データ テンプレートをカスタマイズする

[結果] パネルをドラッグして FlipView にドロップしたとき、データ テンプレートが自動的に生成されました。 このテンプレートに変更を加えて、完成したサンプル アプリでのデータの表示に近づくようにカスタマイズできます。

生成されたテンプレートを編集するには

  1. [オブジェクトとタイムライン] パネルで、[FlipView] を右クリックし、[追加テンプレートの編集][生成されたアイテムの編集 (ItemTemplate)] の順にポイントして、[現在のテンプレートの編集] をクリックします。

    Blend - [生成済みテンプレートの編集]

  2. [オブジェクトとタイムライン] パネルで Ctrl キーを押しながら、[Border][StackPanel] をクリックします。 右クリックし、[削除] をクリックします。

  3. [オブジェクトとタイムライン] パネルの [Grid] をクリックします。 [プロパティ] パネルの [レイアウト] カテゴリで、[Width] の右側にある [自動に設定] Blend の [Set to Auto] アイコン をクリックします。 この手順を [Height] に対して繰り返します。

  4. [余白] の右側にある [詳細プロパティ] 12e06962-5d8a-480d-a837-e06b84c545bb をクリックし、[リセット] をクリックします。

これで、カスタム テンプレートをデザインする準備ができました。

レイアウト グリッドを作成する

Grid レイアウト パネルは Blend プロジェクトの既定のパネルです。 Grid レイアウト パネルについて、Windows ストア アプリのデザイン ガイドラインに従うことにより、アプリのスタイルを Windows 8 スタイル ガイドラインに準拠したものに設定できます。 ガイドラインについて詳しくは、「アプリのページのレイアウト」を参照してください。

ガイドラインによると、Windows ストア アプリの基本単位は 20 x 20 ピクセルであり、各基本単位は 5 x 5 ピクセルのサブ単位に分割されます。 レイアウトはヘッダー、左余白、コンテンツ領域で定義されたグリッドに基づきます。 ガイドラインによると、グリッドの主要な要素は次のとおりです。

  • ページ ヘッダー   ページ ヘッダーのベースラインは上部から 5 単位 (100 ピクセル) にする必要があります。

  • 左余白   左余白は左端から 6 単位 (120 ピクセル) にする必要があります。

  • コンテンツ領域   上余白は上部から 7 単位 (140 ピクセル) にする必要があります。

ガイド (表示されるハンドル) を使用して、オブジェクトに変更を加えることができます。 ガイドはオブジェクトの輪郭の四隅とそれらの中間に表示されます。 ガイドはガイドラインとグリッド線の両端にも表示されます。 グリッドを作成するときは、挿入ガイドに基づいて目的の位置にグリッド線を配置できます。

グリッド内の行と列のサイズを変更するオプションは 3 つあり、各オプションがグリッド内のオブジェクトの配列に影響します。 サイズ変更オプションは次のとおりです。

  • ピクセル   ピクセル値を使用して固定サイズを設定します。

  • Star (*)   Star 値を使用します。パーセント値による幅の設定に似ています。

  • 自動サイズ   相対的な幅を使用します。親オブジェクトのサイズが変更されると、グリッド内のオブジェクトのサイズも変更されます。

レイアウト グリッドでは、ピクセル幅と Star 幅の両方の列を使用します。

レイアウト グリッドの列を作成するには

  1. 元のテンプレートは 2 列 (グリッド列ガイドによって識別) と 1 行で構成されているとします。 グリッド列ガイドをクリックし、右にドラッグします。

    Blend のグリッド列ガイド

  2. 表示された値エディターで、ドロップダウン矢印をクリックして一覧を開き、[ピクセル] をクリックします。

    Blend - グリッド数値エディター - ピクセル

  3. 値エディターで「120」と入力します。

    Blend - ピクセル数値エディター

  4. 作成した最初のガイドの左側にあるグリッドの上部をポイントし、オレンジ色の挿入ガイドをクリックします。 さらに 2 回繰り返します。

    この時点で 5 列が表示されています。

  5. 2 列目の値エディターで「1」と入力します。 [サイズ変更] オプションは [Star] (*) に設定したままにします。

  6. 3 列目の値エディターで「40」と入力します。 [サイズ変更] オプションを [ピクセル] に設定します。

  7. 4 列目の値エディターで「1」と入力します。 [サイズ変更] オプションは [Star] (*) に設定したままにします。

  8. 5 列目の値エディターで「120」と入力します。 [サイズ変更] オプションを [ピクセル] に設定します。

レイアウトの行を作成するには

  1. デザイン サーフェイスで、グリッドの左側の青い点線にポインターを合わせ、表示されるオレンジ色の挿入ガイドをクリックします。

    Blend - オレンジ色の挿入行ガイド

  2. 表示された値エディターで、ドロップダウン矢印をクリックして一覧を開き、[ピクセル] をクリックします。 値エディターで「100」と入力します。

  3. 先ほど作成したグリッド線の下部でポイントし、表示されるオレンジ色の挿入ガイドをクリックします。

  4. 値エディターの一覧を開き、[ピクセル] をクリックします。 値エディターで「40」と入力します。

    この設定により、2 番目のグリッド線が最初のグリッド線の 40 ピクセル下 (140 ピクセル マーク) に配置されます。

この時点で 5 列と 3 行が表示されています。

Blend の PickaFlick のレイアウト グリッド

これで、グリッドへのコンテンツの追加を開始する準備ができました。 追加する最初のオブジェクトはロゴです。

ロゴを追加してスタイルを設定するには

  1. [オブジェクトとタイムライン] パネルで [Grid] が選択されていることを確認します。 [プロジェクト] パネルの Assets フォルダーで、SmallLogo-Chicken.png をダブルクリックしてデザイン サーフェイスに追加します。

  2. [プロパティ] パネルの [レイアウト] カテゴリで、HorizontalAlignment[Center] Blend - HorizontalAlignment - 中央揃え に、VerticalAlignment[Bottom] Blend の [VerticalAlignment 下部]に設定します。

  3. [余白] の右側にある [詳細プロパティ] 12e06962-5d8a-480d-a837-e06b84c545bb をクリックし、[リセット] をクリックします。

  4. [共通] カテゴリで、[伸縮][なし] に設定します。

    Blend の PickaFlick アプリ用の小さい鶏のロゴ

データ バインディングを作成してスタイルを設定する

テンプレートを完成させるには、テンプレートにオブジェクトを追加していき、その後、それらのオブジェクトにデータをバインドします。 想定した見栄えでデータが表示されるように、オブジェクトの表示に変更を加えます。使用するオブジェクトの種類は、バインドするデータの種類によって決まります。 たとえば、ムービー ポスター イメージは Image コントロールにバインドされます。ムービー タイトルと概要は TextBlock コントロールにバインドされます。

ムービー タイトルを追加して配置するには

  1. [オブジェクトとタイムライン] パネルで [Grid] を選択したら、[アセット] パネルで TextBlock をダブルクリックしてデザイン サーフェイスに追加します。

    新しい Textblock オブジェクトがデザイン サーフェイスの左上隅に追加されます。 Esc キーを押してテキスト編集モードを終了します。

  2. 目的のグリッドの列と行に Textblock を配置するには、[プロパティ] パネルの [レイアウト] カテゴリで、次のように設定します。

    • Row   0

      Textblock は先頭の行に配置されます。

    • RowSpan   1

      タイトルは 1 行内に配置されます。

    • Column   1

      列と行の番号は 0 から始まるため、この設定により Textblock は 2 列目に配置されます。

    • ColumnSpan   3

      長いタイトルは複数の列にまたがって 1 行内に表示されます。

    これで、TextBlock は 2 列目の右上に表示されます。

  3. TextBlock を目的の行内に配置するには、[VerticalAlignement][Bottom] Blend の [VerticalAlignment 下部] に設定します。

これで、TextBlock のテキストのスタイルを設定する準備ができました。 次の手順では、テキストのフォントとサイズを設定し、テキストの色を変更します。

TextBlock のテキストのスタイルを設定するには

  1. フォントのガイドライン (Windows ストア アプリ) によると、Windows 8 アプリのヘッダーには 42pt Segoe UI Light を使用する必要があります。

    [プロパティ] パネルの [テキスト] カテゴリで、[フォント] ボックスの一覧から [Segoe UI Light] を選択します。

  2. サイズについては、[フォント] ボックスの右側にある一覧から選択するか、値エディターに直接入力することができます。 ヘッダーについては、「42pt」と入力し、Enter キーを押します。

    Blend の [テキスト] カテゴリ - フォントとサイズ

  3. 文字の下部がテキスト ブロックのベースラインから浮いて表示されています。

    Blend のベースライン上方のヘッダー テキスト

    この余分なスペースはディセンダー (小文字 g の尾部など) 用です。 メイン テキストのベースをベースラインに載るようにすると、ディセンダー用のスペースがすべてベースラインより下のタイトルに含まれることがあります。 ベースラインを調整するには、[レイアウト] カテゴリで下余白を「-18」に設定します。

    これで、テキストはベースラインに載りました。

    Blend のベースライン上のヘッダー テキスト

  4. [プロパティ] パネルの [ブラシ] カテゴリで、色スポイト Blend の色スポイト アイコン をクリックします。

    Blend の色エディター

    デザイン サーフェイスの左上にあるチキン イメージをポイントします。 ポイントしているチキン イメージの部分に応じて、TextBlock のテキストの色が変わります。 目的の赤の色合いが見つかったら、イメージをクリックするとフォントの色が設定されます。

    Blend の TextBlock カラー

これで、ムービー タイトル データを TextBlock にバインドする準備ができました。

ムービー タイトル データを TextBlock オブジェクトにバインドするには

  1. [共通] カテゴリで、[テキスト] の右側にある [詳細プロパティ]  12e06962-5d8a-480d-a837-e06b84c545bb をクリックし、[データ バインディングの作成] をクリックします。

  2. [[TextBlock].Text のデータ バインディングを作成] ダイアログ ボックスで、[Title] をクリックし、[OK] をクリックします。

    Blend のデータ バインディングの作成 - タイトル

次は、ムービー アートを追加し、スタイルを設定します。

ムービー アートを追加して配置するには

  1. [オブジェクトとタイムライン] パネルで [Grid] を選択したら、[プロジェクト] パネルで Assets フォルダーにある Temp.png をデザイン サーフェイスに追加します。

    新しい Image オブジェクトが、Temp.png をソースとして、デザイン サーフェイスに追加されます。

  2. [プロパティ] パネルの [レイアウト] カテゴリで、次のように設定します。

    • Row   3

    • RowSpan   1

    • Column   1

    • ColumnSpan   1

  3. [HorizontalAlignment][Center] Blend - HorizontalAlignment - 中央揃え に、[VerticalAlignment][Top] に設定します。

  4. [余白] の右側にある [詳細プロパティ] 12e06962-5d8a-480d-a837-e06b84c545bb をクリックし、[リセット] をクリックします。

ここでは一時イメージの縦横比の設定は省略します。 ムービー イメージを Image オブジェクトにバインドした後に表示を修正します。

ムービー アートを Image オブジェクトにバインドするには

  1. [共通] カテゴリで、[ソース] の右側にある [詳細プロパティ] 12e06962-5d8a-480d-a837-e06b84c545bb をクリックし、[データ バインディングの作成] をクリックします。

  2. [[Image].Source のデータ バインディングを作成] ダイアログ ボックスで、[Image] をクリックし、[OK] をクリックします。

    Blend の [データ バインディングの作成] ダイアログ ボックス - ムービーのイメージ

  3. [共通] カテゴリの [伸縮] ボックスの一覧で [均一] をクリックします。

次は、ムービー概要を追加し、スタイルを設定します。 ムービー概要によっては、画面の高さより長くなる場合があります。 概要のスクロールを有効にするには、ScrollViewer オブジェクトをテンプレートに追加し、TextBlock を ScrollViewer に追加して、テキストが表示されるようにします。

ムービー概要を追加して配置するには

  1. [オブジェクトとタイムライン] パネルで [Grid] を選択したら、[アセット] パネルで ScrollViewer をダブルクリックしてデザイン サーフェイスに追加します。

    新しい ScrollViewer オブジェクトがデザイン サーフェイスの左上隅に追加されます。

  2. [オブジェクトとタイムライン] パネルで ScrollViewer を選択したら、[レイアウト] カテゴリで [Width] の右側にある [自動に設定] Blend の [Set to Auto] アイコン をクリックします。 この手順を [Height] に対して繰り返します。

  3. Textblock を配置するには、[プロパティ] パネルの [レイアウト] カテゴリで、次のように設定します。

    • Row   2

    • RowSpan   1

    • Column   3

    • ColumnSpan   1

    これで、ScrollViewer が 4 列目、3 行目の左上に表示されました。

  4. [オブジェクトとタイムライン] パネルで ScrollViewer を選択したら、[アセット] パネルで TextBlock をダブルクリックして、2 番目の TextBlock をデザイン サーフェイスに追加します。

    新しい Textblock オブジェクトが ScrollViewer オブジェクトに追加されます。 Esc キーを押してテキスト編集モードを終了します。

TextBlock 要素をムービー概要データにバインドした後は、テキストのスタイルの設定が簡単になります。

ムービー概要データを TextBlock オブジェクトにバインドするには

  1. [共通] カテゴリで、[テキスト] の右側にある [詳細プロパティ]  12e06962-5d8a-480d-a837-e06b84c545bb をクリックし、[データ バインディングの作成] をクリックします。

  2. [[TextBlock].Text のデータ バインディングを作成] ダイアログ ボックスで、[Summary] をクリックし、[OK] をクリックします。

    Blend の [データ バインディングの作成] ダイアログ - ムービーの概要

これで、概要テキストのスタイルを設定する準備ができました。

TextBlock のテキストのスタイルを設定するには

  1. フォントのガイドライン (Windows ストア アプリ) によると、Windows 8 アプリの本文フォントには Segoe UI Semilight を使用することが推奨されています。

    [プロパティ] パネルの [テキスト] カテゴリで、[フォント] ボックスの一覧から [Segoe UI Semilight] を選択します。

  2. サイズについては、[フォント] ボックスの右側にある一覧から選択するか、値エディター内でクリックし、上向きおよび下向きの矢印を使用してフォント サイズを選択します。 Enter キーを押します。 デザイン サーフェイスでの表示を確認することで、目的のフォント サイズを選択します。

  3. [プロパティ] パネルの [ブラシ] カテゴリで、色スポイト Blend の色スポイト アイコン をクリックして画面から色を選択するか、カラー エディター内でクリックしてパレットから色を選択します。

    Blend の色エディター パレット

さまざまなデバイス ディスプレイでプレビューする

Blend ではアプリのライブ ビューが表示されるため、アプリが想定どおりに表示されるかどうかをアプリを実行せずに確認できます。 また、[デバイス] パネルを使用して、アプリがさまざまなデバイス ディスプレイでどのように表示されるかをプレビューすることもできます。

[デバイス] パネルでの表示を有効にするには

  • [表示] オプションを有効にするには、[スコープを戻す] [Return to scope] (スコープに戻る) ボタン をクリックしてテンプレート編集モードを終了します。

ヒント

すべてのオプションがすべてのプロジェクトまたは項目テンプレートに対して有効になるわけではありません。たとえば、[ハイコントラスト][テーマ] の設定は、選択したプロジェクト テンプレート (グリッド アプリ、ハブ アプリ、分割アプリなどのプロジェクト テンプレート) と項目テンプレート (分割ページ、項目ページ、ハブ ページなどの項目テンプレート) に適用されます。

一部のオプションはマニフェスト デザイナーで有効にする必要があります。たとえば、[最小幅][320px] に設定した場合、このオプションはアプリ マニフェストで有効にする必要があることを警告するメッセージが表示されます。詳細については、「マニフェスト デザイナーを使用したアプリケーション パッケージの構成」を参照してください。

Blend のデバイス パネル

組み込みのビヘイビアーを追加する

アプリを実行すると、メイン ページが表示され、チキン ボタン イメージにポインターを合わせると、そのイメージが変わります。 ボタンをクリックしても何も起こりません。クリック イベント トリガーがコントロールに定義されていないためです。 組み込みのビヘイビアーを使用して、NavigateToPageAction をボタンに追加することで、このボタンをクリックするとムービー表示ページが開くようにできます。

  1. MainPage.xaml に切り替えます。 [オブジェクトとタイムライン] パネルで [Button] を選択したら、[ビヘイビアー] カテゴリの [アセット] パネルで NavigateToPageAction をダブルクリックして Button に追加します。

    [EventTriggerBehavior][NavigateToPageAction][オブジェクトとタイムライン] パネルに表示されます。

    Blend のオブジェクトとタイムライン - NavigateToPageAction

  2. [プロパティ] パネルに [共通] カテゴリが 表示されます。 [TargetPage] ドロップダウン リストで、[MovieDisplay.xaml] をクリックします。

    Blend の NavigateToPageAction プロパティ

    ヒント

    別の方法として、[オブジェクトとタイムライン] パネルで [EventTriggerBehavior] をクリックし、[プロパティ] パネルで [Actions (コレクション)] ボタンをクリックできます。[DependencyObjectCollection Editor: Actions] ダイアログ ボックスの [プロパティ] セクションで、[TargetPage] ドロップダウン リストの [MovieDisplay] をクリックします。

F5 キーを押して、アプリをビルドおよび実行します。 チキン ボタンをクリックしてムービー詳細ページを開きます。 画面の左右にある矢印を使用して、新作ムービーをクリックしていきます。

Alt キーを押しながら F4 キーを押して、アプリを閉じます。

次の手順

これが実際のアプリであれば、次の手順はアプリの公開になります。 Windows ストアにアプリを公開する方法の詳細については、「Windows ストアにアプリを公開する作業の概要」を参照してください。