2

Windows ストア アプリで検索コントラクトを実装している場合は、App.xaml.cs で次のようにOnSearchActivatedメソッドをオーバーライドします。

protected override void OnSearchActivated(SearchActivatedEventArgs args)
{
    (Window.Current.Content as Frame).Navigate(typeof(Contracts.Search), args.QueryText);
}

しかし、注意を払っている場合は、次OnActivatedのように、検索のアクティブ化を示すイベント引数を持つ、呼び出された App クラスに別のオーバーライドがあることがわかります。

protected override void OnActivated(IActivatedEventArgs args)
{
    if (args.Kind == ActivationKind.Search)
    {
        (Window.Current.Content as Frame).Navigate(typeof(Contracts.Search), args.QueryText);
    }
}

どちらか一方を実装すると、結果は同じようです。それは疑問を投げかけます:2つの違いは何ですか?それらは本当に同じですか?

4

1 に答える 1

1

はい、同じです。

OnActivatedXAML チームは、最も一般的な種類のアプリ アクティベーションに対して、ジェネリック オーバーライドと厳密に型指定されたオーバーライドを実装するという設計上の決定を行いました。特定のオーバーライドがある場合は、その特定のオーバーライド ( などOnSearchActivated) を使用することをお勧めします。ただし、ファイルやプロトコルのアクティブ化など、一部の高度なシナリオではOnActivated.

注:Pageパイプラインでは、OnActivated最初に起動し、型指定されたオーバーライドが続きます。アプリは一度に 1 つの種類しかアクティブ化できないため、実行の順序は関係ありません。

頑張ってください!

于 2013-05-15T18:28:58.070 に答える