我正在考虑使用Silverlight 3(或更高版本)应用程序的情况,该应用程序将使用SL导航框架。
让我们假设(为了简单起见)它将是一个简单的论坛。在我的应用程序中,我有一个名为Forums.xaml
通常,当我导航到所述页面时,浏览器中的URL会发生变化,尾随字符串将与页面名称匹配。
通常可以通过在网址中提供帖子的ID来访问论坛帖子(直接导航到论坛帖子)。 Silverlight中有这样的事情吗?
答案 0 :(得分:2)
一如既往,这取决于你的具体目标。如果您只想在登陆页面时提取查询字符串值,请使用NavigationContext.QueryString提供的字典:
假设使用以下网址调用了该页面:
mainFrame.Navigate(new Uri("/Page1.xaml?Param=value", UriKind.Relative));
生成的OnNavigatedTo覆盖可能如下所示:
// Executes when the user navigates to this page.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (NavigationContext.QueryString.ContainsKey("Param"))
{
paramText.Text = NavigationContext.QueryString["Param"];
}
}
然后,您可以根据传入参数调整“Page1”上的内容。
现在,如果你想使用Uri Mapping并清理你的Uri,你可以声明一个UriMapper并将它交给你的导航框架,然后用它将你的“干净”网址改成一个有查询字符串的网址。
<Navigation:UriMapper x:Key="PageMapper">
<Navigation:UriMapping Uri="/Things/{value}" MappedUri="/Page1.xaml?Param={value}"/>
</Navigation:UriMapper>
使用时调用:
mainFrame.Navigate(new Uri("/Things/newValue", UriKind.Relative));
将使用上面OnNavigatedTo中列出的相同调用,并将“newValue”作为查询字符串(在您的情况下为Id)传递,并且以下内容显示在地址栏中:
“http://localhost:1877/SilverlightApplication3TestPage.aspx#/Things/newValue