Как передать значение с одной страницы Silverlight на другую? - PullRequest
0 голосов
/ 15 ноября 2010

У меня есть две страницы .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 ]

4 голосов
/ 21 ноября 2012

Объект 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

Вы можете получить информацию об идентификаторе продукта на странице назначения с помощью следующего кода:

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 голос
/ 18 ноября 2010

Я нашел ответ.

В App.xaml.cs

public int LoginID { get; set; }

В LoginPage.xaml.cs, где я установил значение LoginID, я написал

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

В Workloads_New.xaml.cs, где я использую LoginID, я написал

this.ErrorBlock.Text = ((App)App.Current).LoginID.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...