我使用MVVM模式开发我的Windows应用程序。当用户单击列表框usercontrol上的项目时。 viewmodel背后的代码将导航另一个页面。页面显示正确,但问题是当我想从Navigation上下文获取queryString时出现错误 - “NullReferenceException”。我检查了我的viewmodel上的uri已更正。有人会告诉我如何让它发挥作用吗?提前谢谢。
我在An error is occur when we use navigation to move other page引用以在App.xamls.cs页面上添加以下代码,因此viewModel页面可以导航到另一个页面。
public static PhoneApplicationFrame CurrentRootVisual
{
get
{
return (App.Current.RootVisual as PhoneApplicationFrame);
}
}
public static bool Navigate(Uri source)
{
if (CurrentRootVisual != null)
return CurrentRootVisual.Navigate(source);
return false;
}
public static void GoBack()
{
if (CurrentRootVisual != null)
CurrentRootVisual.GoBack();
}
viewModel上有代码导航页面:
private void ShowCallPage()
{
if (m_CurrentQueue != null)
App.Navigate(new Uri("/PivotPage1.xaml?id=" + m_CurrentQueue.callNumber, UriKind.Relative));
}
我在另一页上遇到错误的代码:
public PivotPage1()
{
InitializeComponent();
MessageBox.Show(NavigationContext.QueryString.ContainsKey("id").ToString());
}
答案 0 :(得分:1)
不要访问PivotPage1构造函数上的NavigationContext对象,而是使用Loaded事件。