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 の詳細: LINK

于 2013-01-12T13:37:45.257 に答える
1

エラーを減らすためにできるもう 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 に答える