Silverlight使用HyperlinkBut​​ton在页面之间传递参数

时间:2009-11-07 09:36:26

标签: silverlight parameters hyperlink

我有一个显示用户列表的页面。每个用户都有一个ID和一个HyperlinkBut​​ton来观看有关用户的更多细节。

当按下HyperlinkBut​​ton时,我想导航到另一个页面(称为UserDetails),并以某种方式读取被按下的用户的ID。

我该怎么做?

谢谢,    罗尼

3 个答案:

答案 0 :(得分:7)

我找到了一个很好的解决方案,但我希望听到一些更优雅的东西。

在UriMapper部分,我添加了另一个UriMapping:

<uriMapper:UriMapping Uri="/UserDetails/{UserId}" MappedUri=/Views/UserDetails.xaml"/>

通过这样做,所有导航格式为“/ UserDetails / XXX”将导航到同一页面,UserDetails.xaml。

现在我的HyperlinkBut​​ton是使用具有所需格式的NavigateUri生成的:

NavigateUri = “/的UserDetails / 1234”

现在,在UserDetails.xaml页面上,在OnNavigatedTo方法中,我可以解析Uri参数(e.Uri)并相应地加载用户详细信息。

答案 1 :(得分:6)

您可以使用NavigationContext从查询字符串中获取数据。试试这个:

<HyperlinkButton NavigateUri="/UserDetails?userId=123" />    

并且在导航页面中有类似这样的内容

string customerId = this.NavigationContext.QueryString["customerid"];

答案 2 :(得分:2)

如何将ID放在查询字符串中呢。

<HyperlinkButton 
  x:Name="btn" /**other properties**/
  NavigateUri="http://www.yoururl.com/details.aspx?ID=1234">
</HyperlinkButton>

Details.aspx中,您可以将ID放在silverlight对象的initParams属性中

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
  <param name="initParams" value='<%= GetID() %>' />
</object>
Details.aspx.cs中的

Details.aspx后面的代码,你就像这样填写initParams

public string GetID(){
   return string.Format("ID={0}", Request.QueryString[0]);
}

然后,您可以从silverlight应用程序启动中读取ID

    private void Application_Startup(object sender, StartupEventArgs e)
    {
       int ID = Convert.ToInt32(e.InitParams["ID"]);
    }