Does it matter where charms events such as SettingsPane.CommandsRequested
or DataTransferManager.DataRequested
are handled and if so what is the recommended place to do that - a Page
constructor, OnNavigatedTo
method, Page.Loaded
event handler etc.?
1 に答える
2
グローバル登録の場合、XAML アプリでの最善の策はOnWindowCreatedオーバーライドです。
これにより、ウィンドウが作成された後、正しいスレッド (いずれの GetForCurrentView API も機能するために必要) でコードが実行され、異なるコントラクトに対してアプリが何回アクティブ化されるかに関係なく、各ウィンドウに対して 1 回だけ実行されます。
別の方法として、これらのイベントに登録するページと登録しないページがある場合、または異なる分離された実装を維持したい場合は、ページごとのアプローチを取ることができます。この場合、OnNavigatedToメソッドを使用してそれらを登録し、OnNavigatingFromでそれらを登録解除することをお勧めします。これらのイベント (DataRequested など) の中には、一度に 1 つのハンドラーしか登録できないものがあるため、これは重要です。そのため、現在のページは、アンロードされる前にハンドラーを登録解除する必要があります(したがって、OnNavigat* ing *From は OnNavigatedFrom よりも適切な選択です)。
それが役立つことを願っています。
于 2013-04-26T20:12:39.023 に答える