带有参数的导航页
本文关键字:导航 参数 | 更新日期: 2023-09-27 18:24:30
我试图在silverlight中的导航页面中传递一个参数,但这不起作用。
我收到错误:No xaml found at /Views/post
,而我的地址栏中有:/Views/post?id=53
这是我的主页.xaml:中的部分
<Border BorderBrush="Black"
BorderThickness="0.5"
Background="Beige"
Opacity="0.70"
Visibility="Collapsed"
CornerRadius="5">
<HyperlinkButton x:Name="Link4"
Style="{StaticResource LinkStyle}"
NavigateUri="/post?id={id}"
TargetName="ContentFrame" />
</Border>
所以,当我登录时,我试着直接加载我的页面:
ContentFrame.Navigate(new Uri("/post?id=53", UriKind.Relative));
但是,当我到达我的页面(键入Navigation.page)时,当我进入我的构造函数时,我无法成功获取参数中的53
我试过这个:
string id = this.NavigationContext.QueryString["id"];
但是NavigationContext为空
也尝试过这个:
Uri uri = new Uri(Application.Current.Host.Source.AbsoluteUri);
里面没什么用。
我从不在silverlight中传递url中的参数。我该如何解决此问题?
另外,当我直接在地址栏中写url时,似乎这并不总是有效的。
认为您需要重写OnNavigatedTo方法,以便获得NavigationContext实例。
示例:
// Executes when the user navigates to this page.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.Init(NavigationContext.QueryString["id"], NavigationContext.QueryString["id"]);
}
此外,我认为您需要在Frame中实现UriMapper,然后才能获得所需的参数。
示例:
<navigation:Frame x:Name="NavigationFrame" Navigating="NavigationFrame_OnNavigating">
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping MappedUri="/Views/Page.xaml?id={id}" Uri="/Page/{id}" />
</uriMapper:UriMapper>
</navigation:Frame.UriMapper>
</navigation:Frame>