如果在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还是让它们
答案 0 :(得分: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
答案 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));