0

I have a Windows Phone 7 project with has two pages (home page, about page). I have implemented the touch event handler on the home page containing some code. When I redirect to the about page and touch on this page, the code in the touch handler in the home page executes.

How I can prevent this handler on the about page?

4

1 回答 1

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 的手势监听器。

于 2013-05-25T23:15:41.097 回答