我正在将我的WP 8.1应用程序转换为UWP,因为我对使用棱镜感兴趣,我想我会从头开始构建我的应用程序。我创建了一个带有按钮的页面,导航到另一个页面,部署了应用程序并开始使用它。当我单击按钮导航时,执行以下代码
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'.
两个页面都有ViewModel,并使用Prisms ViewModelLocator.AutoWireViewModel
设置。我尝试清除ViewModel的所有属性,因此它们是空的,没有代码,但没有做任何事情。在视图模型构造函数中放置一个断点,它在调试时确实达到了这一点。
任何想法意味着什么或在哪里看?
更新:问题看起来像是由控件模板引起的。我通过注释掉所有XAML,然后逐个添加内容,将问题缩小到按钮控件。然后我找到导致问题的控件,因此删除了绑定和样式模板。添加了绑定,一切正常,重新添加模板并发生问题。
答案 0 :(得分: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));
}