带参数的导航页面

Posted

技术标签:

【中文标题】带参数的导航页面【英文标题】:Navigation page with parameters 【发布时间】:2013-07-22 06:17:51 【问题描述】:

我正在尝试在 Silverlight 中的导航页面中传递参数,但这不起作用。

我收到了错误:No xaml found at /Views/post而我的地址栏中有:/Views/post?id=53

这是我的 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>

所以,当我登录时,我尝试像这样直接加载我的页面:

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 时,似乎这并不总是有效。

【问题讨论】:

【参考方案1】:

认为您需要覆盖 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>

【讨论】:

无法在构造函数中获取 NavigationContext 实例。它等于空。 Page.OnNavigatedTo 方法的描述:“当页面成为框架中的活动页面时调用”。它取自 msdn。想想,它是处理 NavigationContext 的更好地方。 不过,当我输入地址时,我并不总是可以进入我的页面。 您是否尝试在 OnNavigatedTo 方法中获取 NavigationContext? NavigationContext 的价值是什么? 看看类似的问题:***.com/questions/4555985/…***.com/questions/6831126/… 我在导航上下文中得到了值,但只有当我进入页面时。问题是,我并不总是经历它。大约一半的时间,当我进入地址时,什么也没发生。

以上是关于带参数的导航页面的主要内容,如果未能解决你的问题,请参考以下文章

带参数的角度 10 路由和导航错误

组件导航,带参数从后台弹出

带参数的 routerLink 正在更改 URL 但不导航或重新加载组件

Flutter页面导航

tp5,success成功后怎么带参数跳转?

asp 带参数跳转问题