C# Windows Phone-如何处理导航错误

C# Windows Phone-如何处理导航错误,c#,windows-phone-7,windows-phone,windows-phone-8,C#,Windows Phone 7,Windows Phone,Windows Phone 8,如果导航错误发生在OnNavigatedTo方法中,我应该如何处理它们。例如,解析为整数时,查询字符串参数未传递或引发异常 protected override void OnNavigatedTo(NavigationEventArgs e) { string itemIdParam; if (NavigationContext.QueryString.TryGetValue("itemId", out itemIdParam))

如果导航错误发生在OnNavigatedTo方法中,我应该如何处理它们。例如,解析为整数时,查询字符串参数未传递或引发异常

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        string itemIdParam;

        if (NavigationContext.QueryString.TryGetValue("itemId", out itemIdParam))
        {
            int itemId = int.Parse(NavigationContext.QueryString["itemId"]);

            _item = App.MainViewModel.Items.Where(i => i.ItemId == itemId).First();

            DataContext = _item;
        }
    }
我应该捕捉它们并显示消息框,还是让它们像这样尝试:

if( this.NavigationContext.QueryString.ContainsKey("itemId"))
  {
      string s_itemid = this.NavigationContext.QueryString["itemId"];
      int i_itemid;
      bool result = Int32.TryParse(s_itemid, out i_itemid);
      if(result)
         //parsing success
      else
         //parsing error

  }
else
   //parameter doesn't exist

关于TryParse的更多信息:

另一种减少错误的方法是定义导航uri。 例如,在Details.xaml页面中,您可以创建一个名为GetUri()的静态方法,其中包含所需类型的参数

public static Uri GetUri(int itemId){
  return new Uri(string.Format("/Details.xaml?itemId={0}", itemId), UriKind.Relative);
}
当您想导航到详细信息页面时,只需写:

NavigationService.Navigate(Details.GetUri(2));

不管怎样?这取决于你决定你的应用程序应该如何应对错误。当然,也许有一个推荐的方法?我知道TryParse方法,但问题是如何处理这种情况。例如,如果我显示MessageBox,它将阻止执行。我不知道这是不是一种好的风格。