如何在Metro风格应用程序中将值从一个xaml页面传递到另一个页面

时间:2012-09-28 16:35:43

标签: c# xaml windows-8 microsoft-metro winrt-xaml

我有两个XAML页面:Menu.xaml和Main.xaml。

在Menu.xaml上,我有2个按钮(Easy& Hard),当我点击按钮时,我会导航到Main.xaml。

当我点击'Easy'或'Hard'时,我希望传递一些价值, 这样我就可以适当地填充Main.xaml。

1.如何在C#中传递值/参数?
2.我在哪里检索这些值(例如在PageLoad上?)

2 个答案:

答案 0 :(得分:3)

查看Frame.Navigate方法。有一个重载可以传递参数。

See this for an example

通常情况如下:

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方法

答案 1 :(得分:3)

Metro App中的导航非常简单。

C#示例:

将此添加到您的点击或任何其他事件将您带到主页。

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

然后在您导航到的页面上,您可以在其OnNavigatedTo事件中获取参数。

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    var myDifficulty= e.Parameter; 
    ...    
}