更改页面时删除触摸处理程序

本文关键字:触摸 处理 程序 删除 | 更新日期: 2023-09-27 18:15:15

我有一个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事件中你可以取消订阅touch事件

// In about page
protected override void OnNavigatedTo(NavigationEventArgs e) {
  base.OnNavigatedTo(e);
  System.Windows.Input.Touch.FrameReported -= App.MainPage.Touch_FrameReported;
}

如果你想监听特定元素上的手势,你也可以考虑使用WP Toolkit的手势监听器。