【问题标题】:Navigation Issues Windows Phone 8.1导航问题 Windows Phone 8.1
【发布时间】:2015-12-18 10:45:32
【问题描述】:

我在 Windows Phone 8.1 中遇到了这个不寻常的问题

这是我的代码:

try
{
    news c = news_List.SelectedItem as news;
    Frame.Navigate(typeof(Pages.newsItem), c);
}
catch(Exception ex)
{
    MessageDialog j = new MessageDialog(ex.Message);
    await j.ShowAsync();
}

所以问题在于 Windows Phone 8.1,有时当我单击元素时应用程序崩溃,仅此而已。 在调试模式下没有附加内容,在 Windows 上 10 移动它就像一个魅力......

【问题讨论】:

    标签: c# windows-phone-8.1 windows-10-mobile


    【解决方案1】:

    使用这个

    try
    {
        news c = news_List.SelectedItem as news;
        await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => this.Frame.Navigate(typeof(Pages.newsItem), c));
    }
    catch(Exception ex)
    {
        MessageDialog j = new MessageDialog(ex.Message);
        await j.ShowAsync();
    }
    

    并且不要忘记在方法中添加异步并确保您在另一个页面上获取数据。

    【讨论】:

    • 效果很好!非常感谢!你能解释一下为什么吗?
    • 最可能的原因是您试图从 非 UI 线程调用 Navigate。对于非 UI 线程只需使用 Dispatcher.RunAsync() 方法来调度UI 线程上的代码。
    【解决方案2】:

    使用 news c = news_List.SelectedItem as news; Frame.Navigate(typeof(PageName),c);

    【讨论】:

    • 不过,这不允许他将任何数据传递给新视图