我正在構建一個WP8應用程序。在我的應用程序的初始頁面(登錄後),我使用GestureService來操縱屏幕並創建滑出菜單的效果。這是所有罰款,但問題是每當應用程序的任何其他頁面上ListPicker控制執行刷卡動作GestureService被激活,並引發了未處理的對象引用未設置例外,就像這樣:Windows Phone 8 - 應用程序崩潰時刷過Listpicker
我已經做了一些挖掘,這似乎是WP工具包中的一個錯誤。 WP8仿真器和我使用的諾基亞WP8開發手機的行爲是相同的。根據this線程,我可以使用ManipulationDelta和ManipulationCompleted事件來實現GestureListener所做的同樣的事情。所以我評論了GestureService代碼,並將操作事件添加到主頁上的網格中。低看,問題已經消失。
這裏是GestureService調用(我最初的XAML頁),這是現在註釋掉:
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener DragDelta="GestureListener_OnDragDelta" DragCompleted="GestureListener_OnDragCompleted" />
</toolkit:GestureService.GestureListener>
我現在面臨被翻譯代碼到新格式的問題。下面是我使用(在VB)動作代碼:
If e.Direction = System.Windows.Controls.Orientation.Horizontal AndAlso e.HorizontalChange > 0 AndAlso Not _isSettingsOpen Then
Dim offset As Double = _feContainer.GetHorizontalOffset().Value + e.HorizontalChange
If offset > _dragDistanceToOpen Then
Me.OpenSettings()
Else
_feContainer.SetHorizontalOffset(offset)
End If
End If
If e.Direction = System.Windows.Controls.Orientation.Horizontal AndAlso e.HorizontalChange < 0 AndAlso _isSettingsOpen Then
Dim offsetContainer As Double = _feContainer.GetHorizontalOffset().Value + e.HorizontalChange
If offsetContainer < _dragDistanceToClose Then
Me.CloseSettings()
Else
_feContainer.SetHorizontalOffset(offsetContainer)
End If
End If
不是在GestureListener所有屬性都可以/媲美的操作事件。所以我最好在士兵身上戰鬥並試圖重現操縱中的效果(如果甚至可能的話),還是有人知道這樣做的更好方法;即修復或繞過該錯誤以允許GestureService正常工作的方式......?
我已經嘗試添加GestureListener代碼並嘗試使用ListPicker控件對頁面嘗試捕捉語句,但它沒有解決問題。
在另一個(相關)筆記上,我可以通過簡單地將異常設置爲在App.Xaml中處理來避免該錯誤。那裏還有一個未處理的異常,我只是無視它。這種行爲是否可能導致我的應用被拒絕從商店?
任何幫助表示讚賞。
你並不孤單!我遇到了同樣的問題,我使用了與您相同的解決方案。我使用下面的代碼片段過濾了異常(這是壞的代碼來修復壞框架哈哈) 'e.Handled =(e.ExceptionObject是ArgumentException)&& e.ExceptionObject.Message。Equals(「值不在預期範圍內。」)&& e.ExceptionObject.StackTrace.Contains(「at MS.Internal.XcpImports.MethodEx」);' – nverinaud