SHOEISHA iD

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

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

速習 Windowsストアアプリケーション

Windowsストアアプリのコントラクトの基礎
――検索、共有、設定、リモート再生

速習 Windowsストアアプリケーション 第4回

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

検索コントラクトの追加

新しい項目の追加

 検索コントラクトの追加は、「新しい項目の追加」から行うと簡単です。

 ソリューションエクスプローラーのプロジェクト名、またはファイルを追加したいフォルダーの位置でマウスを右クリックし、[追加]-[新しい項目]を選択します。

新しい項目の追加
新しい項目の追加

 項目のリストから、[検索コントラクト]を選んで追加します。

検索コントラクトの追加
検索コントラクトの追加

 この時点で「Package.appxmanifest」を開くと、宣言タブに検索コントラクトが追加されているのが確認できます。

検索コントラクトがマニフェストファイルに追加される
検索コントラクトがマニフェストファイルに追加される

 この状態でアプリケーションを実行することで、検索チャームの検索対象としてアプリケーションが表示されます。

 検索チャームの表示対象は、OSの設定画面からユーザーが変更することができます。

OnSearchActivatedの確認

 検索コントラクトを追加することで、マニフェストファイルに設定が追加されることは先ほど確認しました。

 加えてファイル名を変えずにそのまま追加を行った場合、「SearchResultsPage1.xaml」と「SearchResultsPage1.xaml.cs」という2つのファイルが追加されます。これは検索結果を表示するためのページ用ファイルです。

 実は、それ以外にも「App.xaml.cs」に記述が追加されています。

OnSearchActivated
/// <summary>
/// 検索結果を表示するためにアプリケーションがアクティブになるときに呼び出されます。
/// </summary>
/// <param name="args">アクティブ化要求に関する詳細を表示します。</param>
protected async override void OnSearchActivated(Windows.ApplicationModel.Activation.SearchActivatedEventArgs args)
{
    // TODO: アプリケーションがすでに実行されている場合は、検索時間を短縮するために OnWindowCreated で
    // Windows.ApplicationModel.Search.SearchPane.GetForCurrentView().QuerySubmitted イベントを登録します

    // ウィンドウで Frame ナビゲーションがまだ使用されていない場合は、独自の Frame を挿入します
    var previousContent = Window.Current.Content;
    var frame = previousContent as Frame;

    // アプリケーションにトップレベルのフレームが含まれていない場合は、これが 
    // 最初に起動される可能性があります。通常は、App.xaml.cs のこのメソッドおよび 
    // OnLaunched で共通のメソッドを呼び出すことができます。
    if (frame == null)
    {
        // ナビゲーション コンテキストとして動作するフレームを作成し、
        // SuspensionManager キーに関連付けます
        frame = new Frame();
        SearchContractSample.Common.SuspensionManager.RegisterFrame(frame, "AppFrame");

        if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
        {
            // 必要な場合のみ、保存されたセッション状態を復元します
            try
            {
                await SearchContractSample.Common.SuspensionManager.RestoreAsync();
            }
            catch (SearchContractSample.Common.SuspensionManagerException)
            {
                // 状態の復元に何か問題があります。
                // 状態がないものとして続行します
            }
        }
    }

    frame.Navigate(typeof(SearchResultsPage1), args.QueryText);
    Window.Current.Content = frame;

    // 現在のウィンドウがアクティブであることを確認します
    Window.Current.Activate();
}

 OnSearchActivatedイベントハンドラーは、検索チャームからアプリケーションに対してのイベントが実行された際に呼び出されるイベントハンドラーです。

 アプリケーションが起動中の検索もそうですが、アプリが非実行状態にある時も検索チャームからアプリケーションが起動されることがあることに注意しましょう。その場合、通常の初期化処理(OnLaunched)は呼び出されないので、OnSearchActivatedで初期化処理を行う必要があります。

SearchResultsPage1.xamlで検索結果を表示

 SearchResultsPage1.xamlは、GridViewコントロールで検索結果一覧を表示できるようになっているシンプルなページです。

 検索の結果を表示する場合、このページを修正するところから始めるとよいでしょう。

次のページ
共有コントラクト

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習 Windowsストアアプリケーション連載記事一覧

もっと読む

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング