C# 带参数的导航页面
我试图在silverlight中的导航页面中传递一个参数,但这不起作用 我得到了错误:C# 带参数的导航页面,c#,silverlight,xaml,url-parameters,C#,Silverlight,Xaml,Url Parameters,我试图在silverlight中的导航页面中传递一个参数,但这不起作用 我得到了错误:在/Views/post上找不到xaml,而我的地址栏中有:/Views/post?id=53 以下是my mainPage.xaml中的部分: <Border BorderBrush="Black" BorderThickness="0.5" Background="Beige" Opacity="0.70" Visibility="Co
在/Views/post
上找不到xaml,而我的地址栏中有:/Views/post?id=53
以下是my mainPage.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>
但是当我到达我的页面(键入Navigation.page)时,当我进入构造函数时,我没有成功地在参数中获取53
:
我试过这个:
string id = this.NavigationContext.QueryString["id"];
Uri uri = new Uri(Application.Current.Host.Source.AbsoluteUri);
但是NavigationContext为空
我也试过:
string id = this.NavigationContext.QueryString["id"];
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"]);
}
<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>
另外,我认为您需要在一个框架中实现一个UriMapper,然后您可以获得所需的参数
例如:
// Executes when the user navigates to this page.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.Init(NavigationContext.QueryString["id"], NavigationContext.QueryString["id"]);
}
<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>
无法在构造函数中获取NavigationContext实例。它等于null。Page.OnNavigatedTo方法的描述:“当页面成为框架中的活动页面时调用”。它来自msdn。想一想,它是处理NavigationContext的更好的地方。但是,当我输入地址时,我并不总是能够进入我的页面。你是否尝试在OnNavigatedTo方法中获取NavigationContext?NavigationContext的价值是什么?看看类似的问题:我在NavigationContext中得到了价值,但只有当我进入页面时。问题是,我并不总是经历它。大约有一半的时间,当我进入地址时,什么也没发生。