UWP导航引起访问冲突。

3

我正在将我的WP 8.1应用程序转换为UWP,因此我对使用prism感兴趣,我想从头开始构建我的应用程序。我创建了一个页面,并在其中放置了一个按钮来导航到另一个页面,部署应用程序并进行了尝试。当我单击按钮以导航时,执行以下代码:

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,并使用Prisms ViewModelLocator.AutoWireViewModel进行设置。我尝试清除ViewModels的所有属性,使它们为空且没有代码,但什么也没做到。在ViewModel构造函数中设置断点并在调试时到达此点。

有任何想法是什么意思或者还有哪里可以查找?

更新: 问题似乎是由控件模板引起的。我通过注释所有XAML然后逐一添加回来的方式将问题缩小到了一个按钮控件上。然后我发现控件引起了问题,因此我删除了绑定和样式模板。重新添加绑定,一切正常,再次添加模板,问题就出现了。


那在模板里面有什么?我猜可能是缺失了某个资源,比如在XAML中定义的一个画笔。 - terry
1个回答

2

你可能需要使用调度程序来在正确的线程上执行代码。

//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));
}

尝试过了,问题仍然存在。 - Gaz83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接