2013-05-15 86 views
2

如果要實現在Windows Store應用搜索合同,然後在App.xaml.cs你重寫了OnSearchActivated方法是這樣的:App.OnSearchActivated與App.OnActivated與ActivationKind.Search有什麼不同?

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); 
    } 
} 

當我實現一個或另一個結果似乎是相同的。這引出了一個問題:兩者有什麼區別? 他們真的一樣嗎?

回答

1

是的,它們是相同的。

XAML團隊做出了設計決定,實施泛型OnActivated覆蓋以及針對最常見類型的應用程序激活的強類型覆蓋。最好的做法是,如果有特定的覆蓋,則使用特定的覆蓋(如OnSearchActivated)。但是一些高級場景,如文件或協議激活,需要OnActivated

注意:在Page管道中,OnActivated首先觸發,隨後輸入覆蓋。由於應用程序一次只能由一種類型激活,因此執行順序無關緊要。

祝你好運!