Как передать значения с одной страницы xaml на другую в приложении в стиле Metro

У меня есть две страницы XAML: Menu.xaml и Main.xaml.

В Menu.xaml у меня есть 2 кнопки (простая и сложная), и когда я нажимаю кнопки, я перехожу к Main.xaml.

Я хочу передать какое-то значение, когда я нажимаю «Легко» или «Сложно», чтобы я мог соответствующим образом заполнить Main.xaml.

1. Как передать значения/аргументы в C#?
2. Где я могу получить эти значения (например, в PageLoad?)


person nv.snow    schedule 28.09.2012    source источник


Ответы (2)


Взгляните на методы Frame.Navigate. Существует перегрузка, позволяющая передать параметр.

см. пример

Обычно это будет выглядеть примерно так:

private void OnButtonClick(object sender, EventArgs args)
{
    if (sender == easyButton)
      NavigateToDifficulty(DifficultyLevel.Easy);
    else
      NavigateToDifficulty(DifficultyLevel.Hard);
}

private void NavigateToDifficulty(DifficultyLevel difficulty)
{
   this.Frame.Navigate(typeof(DifficultyPage), difficulty)
}

Чтобы получить параметр навигации, просмотрите метод LayoutAwarePage (входит в образцы шаблонов) LoadState.

person cordialgerm    schedule 28.09.2012

Навигация в приложении Metro довольно проста.

Пример С#:

Добавьте это к своему клику или любому другому событию, которое приведет вас на главную страницу.

this.Frame.Navigate(typeof(Main),myDifficulty); 

Затем на странице, на которую вы переходите, вы можете получить аргумент в событии OnNavigatedTo.

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    var myDifficulty= e.Parameter; 
    ...    
} 
person J. Tanner    schedule 28.09.2012