0

我试图在我的导航页面中传递一个参数,在 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)); 

53但是当我到达我的页面(类型 Navigation.Page)时,当我进入我的构造函数时,我没有成功获取in 参数:

我试过这个:

string id = this.NavigationContext.QueryString["id"];

但 NavigationContext 为空

也试过这个:

    Uri uri = new Uri(Application.Current.Host.Source.AbsoluteUri);

它没有任何用处。

我从不在 Silverlight 的 url 中传递参数。我该如何解决这个问题?

另外,当我直接在地址栏中写 url 时,似乎这并不总是有效。

4

1 回答 1

2

认为您需要覆盖 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>
于 2013-07-23T09:44:24.273 回答