2

多くのオンライン例に従って、アプリケーションの検索ペインにハンドラーをアタッチすることにより、Metroアプリに検索を実装しました。

public void DoSearch() {
    var mySearchPane = SearchPane.GetForCurrentView();
    if (null == mySearchPane) return;
    mySearchPane.QuerySubmitted +=
        new TypedEventHandler<SearchPane, SearchPaneQuerySubmittedEventArgs>(OnQuerySubmitted);
    mySearchPane.Show();
}

private void OnQuerySubmitted(...) {
    // ...blah, blah
}

質問:QuerySubmittedイベントのハンドラーは、検索が終了した後に最終的に削除する必要がありますか?削除する必要がある場合、検索の完了後にイベントハンドラーを削除するにはどうすればよいですか?

4

1 に答える 1

0

検索イベントへの配線を含め、検索を開始するために、ボタンのクリックなどの特定のユーザー アクションを配線しているようです。これは正しいアプローチではありません。

ページが作成されたときに、一度イベントを呼び出しSearchPane.GetForCurrentViewてフックする必要があります。QuerySubmittedユーザーはいつでもチャーム バーを呼び出して検索を実行できます。私の仮定が正しければ、アプリはそのシナリオを処理できません。

UX から検索ペインを開きたい場合 (通常、UX の実践としては適切ではありません)、いつでもページの残りの部分にアクセスできるクラス変数として mySearchPane を設定し、mySearchPane.Show()内部から呼び出すことができます。今と同じようにハンドラーをクリックします。

QuerySubmittedこのように処理する場合、ページから移動するとハンドラーがクリーンアップされるため、ハンドラーの切断について心配する必要はありません。

于 2012-09-27T14:27:52.513 に答える