2013-05-25 25 views
0

我有一個具有兩個頁面(主頁,關於頁面)的Windows Phone 7項目。 我在包含一些代碼的主頁上實現了touch事件處理程序。 當我重定向到關於頁面並觸及此頁面時,主頁中觸摸處理程序中的代碼將執行。更改頁面時刪除觸摸處理程序

如何防止關於頁面上的處理程序?

+0

您使用哪種觸摸處理程序? System.Windows.Input.Touch.FrameReported? –

+0

是的我正在使用System.Windows.Input.Touch.FrameReported – mhmad

回答

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工具包的姿態監聽器具體要素。

+0

你能解釋這一段:爲此,你需要一個對你的主頁的引用,以便你可以從其他頁面取消訂閱這個事件。我會做的是在App.cs中添加一個靜態變量,該變量包含對主頁面的引用,並且還公開您的方法。在MainPage的構造函數中設置引用。 – mhmad

+0

看到我上面的編輯。 –