C# 更改页面时移除触摸处理程序

C# 更改页面时移除触摸处理程序,c#,windows-phone-7,event-handling,C#,Windows Phone 7,Event Handling,我有一个WindowsPhone7项目,有两个页面(主页,关于页面)。 我已经在包含一些代码的主页上实现了触摸事件处理程序。 当我重定向到about页面并触摸该页面时,主页中触摸处理程序中的代码将执行 如何防止“关于”页面上出现此处理程序?System.Windows.Input.Touch.FrameReported是一个静态事件,将影响所有页面。你需要在不想被调用的页面中取消订阅 要做到这一点,您需要对主页的引用,以便您可以从其他页面取消订阅此活动。我要做的是在App.cs中添加一个静态变量

我有一个WindowsPhone7项目,有两个页面(主页,关于页面)。 我已经在包含一些代码的主页上实现了触摸事件处理程序。 当我重定向到about页面并触摸该页面时,主页中触摸处理程序中的代码将执行


如何防止“关于”页面上出现此处理程序?

System.Windows.Input.Touch.FrameReported是一个静态事件,将影响所有页面。你需要在不想被调用的页面中取消订阅

要做到这一点,您需要对主页的引用,以便您可以从其他页面取消订阅此活动。我要做的是在App.cs中添加一个静态变量,该变量保存对主页的引用,并将您的方法公开。在主页的构造函数中设置引用

//在App.cs的App类中添加此字段
公共静态主页面主页面{get;set;}
//主页面
公共主页(){
App.MainPage=这个;
//...
}
然后在其他页面的NavigatedTo事件中,您只需取消订阅touch事件

//在关于页面中
受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e){
基地。导航到(e);
System.Windows.Input.Touch.FrameReported-=App.MainPage.Touch\u FrameReported;
}

你也可以考虑使用WP工具包的手势侦听器,如果你想听听特定元素上的手势。< /P>你使用哪一个触控处理器?System.Windows.Input.Touch.FrameReported?是的,我正在使用System.Windows.Input.Touch.FrameReported。您能解释一下这一段吗:要做到这一点,您需要对主页的引用,以便从其他页面取消订阅此事件。我要做的是在App.cs中添加一个静态变量,该变量保存对主页的引用,并将您的方法公开。在主页的构造函数中设置引用。