0

如果导航错误发生在 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;
        }
    }

我应该抓住它们并显示一个 MessageBox 还是让它们

4

2 回答 2

1

试试这样:

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 的更多信息:链接

于 2013-01-12T13:37:45.257 回答
1

您可以做的另一件事来减少错误是定义您的导航 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));
于 2013-01-17T03:32:15.173 回答