2 つのページ (ホームページ、ページについて) を持つ Windows Phone 7 プロジェクトがあります。いくつかのコードを含むホームページにタッチ イベント ハンドラーを実装しました。About ページにリダイレクトしてこのページをタッチすると、ホームページのタッチ ハンドラのコードが実行されます。
aboutページでこのハンドラーを防ぐにはどうすればよいですか?
2 つのページ (ホームページ、ページについて) を持つ Windows Phone 7 プロジェクトがあります。いくつかのコードを含むホームページにタッチ イベント ハンドラーを実装しました。About ページにリダイレクトしてこのページをタッチすると、ホームページのタッチ ハンドラのコードが実行されます。
aboutページでこのハンドラーを防ぐにはどうすればよいですか?
System.Windows.Input.Touch.FrameReported
すべてのページに影響する静的イベントです。呼び出されたくないページで購読を解除する必要があります。
そのためには、このイベントを他のページから登録解除できるように、メイン ページへの参照が必要です。メイン ページへの参照を保持し、メソッドを公開する静的変数を App.cs に追加します。MainPage のコンストラクターで参照を設定します。
// Add this field in App class in App.cs
public static MainPage MainPage { get; set; }
// MainPage Ctor
public MainPage() {
App.MainPage = this;
//...
}
次に、他のページの NavigatedTo イベントで、タッチ イベントのサブスクライブを解除するだけです。
// In about page
protected override void OnNavigatedTo(NavigationEventArgs e) {
base.OnNavigatedTo(e);
System.Windows.Input.Touch.FrameReported -= App.MainPage.Touch_FrameReported;
}
特定の要素でジェスチャを聞きたい場合は、WP Toolkit のジェスチャ リスナの使用を検討することもできます。