Windows phone 8 从列表框导航到详细信息页面。WP8

Windows phone 8 从列表框导航到详细信息页面。WP8,windows-phone-8,exception-handling,listbox,navigation,master-detail,Windows Phone 8,Exception Handling,Listbox,Navigation,Master Detail,通过遵循上的指南,我在解决方案中添加了一个新项目,以显示母版页(在数据模板中包含一个带有图像和texblock的列表框)和一个DetailsPage(StackPanel中的Header、image和TextBlock)。列表显示得很好,但在点击图像或文本块时,不会导航到DetailsPage或其他任何位置,但会在输出中引发此错误: 中发生“System.InvalidOperationException”类型的异常 Microsoft.Phone.ni.dll,在托管/本机 边界程序“[732

通过遵循上的指南,我在解决方案中添加了一个新项目,以显示母版页(在数据模板中包含一个带有图像和texblock的列表框)和一个DetailsPage(StackPanel中的Header、image和TextBlock)。列表显示得很好,但在点击图像或文本块时,不会导航到DetailsPage或其他任何位置,但会在输出中引发此错误:

中发生“System.InvalidOperationException”类型的异常 Microsoft.Phone.ni.dll,在托管/本机 边界程序“[732]TaskHost.exe”已退出,代码为-1 (0xFFFFFF)

并转到App cs文件中的这部分代码:

//导航失败时要执行的代码
私有void RootFrame_NavigationFailed(对象发送方,NavigationFailedEventArgs e)
{
if(Debugger.IsAttached)
{
//导航失败;请闯入调试器
Debugger.Break();
}
}
如果我在NavigationFailed过程中按住“e”参数的光标,它会显示:

在“/DetailsPage.XAML”位置未找到XAML

这是我在“MasterPage.xaml”中看到的内容,其中包含以下列表:


这是背后的代码。请告诉我错误,并指导我正确使用SelectedItem/SelectedItem/SelectedIndex/SelectedIndex(我只是不知道如何使用它们,也不知道它们的正确符号)

private void MainListBox\u SelectionChanged(对象发送者,selectionchangedventargs e)
{
//如果所选项目为空(无选择),则不执行任何操作
如果(MainListBox.SelectedItem==null)
返回;
//导航到新页面
NavigationService.Navigate(新Uri(“/DetailsPage.xaml?selectedItem=“+MainListBox.selectedItem,UriKind.Relative));
//NavigationService.Navigate(新Uri(“/DetailsPage.xaml?selectedIndex=“+MainListBox.selectedIndex,UriKind.Relative));
//将所选项目重置为空(无选择)
MainListBox.SelectedItem=null;
}

首先,将代码更改回
SelectedIndex
,但我会使用其他数字来标识自定义类

此异常在大多数情况下意味着它无法在解决方案中找到请求的页面。如果将DetailsPage移动到某个子文件夹,则需要更改如下路径:[subfolder]/DetailsPage.xaml

另外,如果您再次遇到异常,请将鼠标悬停在
私有void RootFrame\u NavigationFailed(对象发送方,NavigationFailedEventArgs e)
中的
e
参数上,并告诉我们它是什么意思。

明白了! 你是对的。 当我向解决方案中添加一个新项目时,导航服务需要第二个项目的完整路径和要导航到的页面(我觉得很奇怪,因为我正在第二个项目中的页面之间导航)。 好吧,这是我的解决方案:

在母版页中:

NavigationService.Navigate(new Uri("/DataBoundApp1;component/DetailsPage.xaml?selectedItem=" + (MainLongListSelector.SelectedItem as ItemViewModel).ID, UriKind.Relative));

谢谢你的帮助

您的解决方案资源管理器是这样的吗:?是的,它看起来是一样的,加上一个“图像”文件夹。很高兴它能工作!您应该提到,您的解决方案有更多的项目;)然后,正如您的解决方案所示,导航会略有不同。