我有一个Windows Phone 7项目有两个页面(主页,关于页面)。 我在主页上实现了包含一些代码的触摸事件处理程序。 当我重定向到about页面并触摸此页面时,主页中触摸处理程序中的代码将执行。
如何在about页面上阻止此处理程序?
答案 0 :(得分:1)
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的手势监听器。