如何将值从一个Silverlight页面传递到另一个?

时间:2010-11-15 16:43:02

标签: silverlight

我有两个.xaml页面LoginPage和子页面 - Workloads_New。我需要将LoginID从LoginPage传递给Workloads_New。但是在Workloads_New中我一直得到LoginID值0.这是我在LoginPage中的代码:

    void webService_GetUserIDCompleted(object sender, GetUserIDCompletedEventArgs e)
{
int ID = e.Result; //for example i get ID=2
if (ID > 0)
    {
    this.Content = new MainPage();
    Workloads_New Child = new Workloads_New();
    Child.LoginID = ID; //In debug mode i see that ID=2 and LoginID=2
    }
}

在Workloads_New中我有:

    public int LoginID { get; set; }

private void ChildWindow_Loaded(object sender, RoutedEventArgs e)
{
     //to test i just want to see that id in textblock but i keep getting LoginID=0 why?
     this.ErrorBlock.Text = this.LoginID.ToString();
}

2 个答案:

答案 0 :(得分:4)

UriMapper对象还支持带有查询字符串参数的URI。例如,考虑一下 以下映射:

在XAML中:

<navigation:UriMapping Uri="Products/{id}"
MappedUri="/Views/ProductPage.xaml?id={id}"></navigation:UriMapping>

在C#中你也可以看到这个

考虑以下代码,它将两个数字嵌入到URI中 查询字符串参数:

string uriText = String.Format("/Product.xaml?productID={0}&type={1}",productID, productType);

mainFrame.Navigate(new Uri(uriText), UriKind.Relative);

典型的已完成URI可能如下所示:

/Product.xaml?productID=402&type=12

您可以使用以下代码检索目标网页中的产品ID信息:

int productID, type;
if (this.NavigationContext.QueryString.ContainsKey("productID"))
productID = Int32.Parse(this.NavigationContext.QueryString["productID"]);
if (this.NavigationContext.QueryString.ContainsKey("type"))
type = Int32.Parse(this.NavigationContext.QueryString["type"]);

答案 1 :(得分:1)

我找到了答案。

在App.xaml.cs

public int LoginID { get; set; }

在我设置了LoginID值的LoginPage.xaml.cs中,我写了

((App)App.Current).LoginID = ID;

在Workloads_New.xaml.cs中我使用LoginID编写了

this.ErrorBlock.Text = ((App)App.Current).LoginID.ToString();