2016-02-05 60 views
1

我正在將我的WP 8.1應用程序轉換爲UWP,因爲我有興趣使用棱鏡,我認爲我會從零開始構建我的應用程序。我用一個按鈕創建了一個頁面,導航到另一個頁面,部署應用程序並給它一個。當我點擊按鈕導航下面的代碼執行UWP導航導致訪問Viloation

private void Button1_Click(object sender, RoutedEventArgs e) 
{ 
    this.Frame.Navigate(typeof(TestPage)); 
} 

然後崩潰的應用程序。當我查看VS2015中的輸出窗口時,我在底部看到以下內容。

The program '[4760] MyApp.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.

兩個頁面都具有的ViewModels和使用棱鏡ViewModelLocator.AutoWireViewModel設置。我試着清除ViewModel的所有屬性,所以它們是空的,沒有代碼,但是什麼也沒做。在視圖模型構造函數中放置一個斷點,並在調試時達到這一點。

任何想法這意味着什麼或看到什麼地方?

更新:問題看起來像是由控制模板引起的。我通過註釋掉所有的XAML,然後逐個添加回來,將問題縮小到按鈕控件。然後我發現控件導致該問題,因此刪除了綁定和樣式模板。添加綁定回來,一切正常,將模板添加回來,發生問題。

+0

那麼什麼是模板?我想這是一個資源缺失,例如在xaml中定義了一個畫筆 – terry

回答

1

您可能需要使用調度程序在正確的線程上執行代碼。

//Initiate and set this at the startup of your app, on the UI thread. 
dispatcher = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher; 

然後使用調度程序來運行代碼:

private async void Button1_Click(object sender, RoutedEventArgs e) 
{ 
    await dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
      this.Frame.Navigate(typeof(TestPage)); 
} 
+0

嘗試過並仍然是同樣的問題。 – Gaz83

+0

可能看到源代碼在哪裏? –