我正在为Windows 8手机编写应用程序。我想将一些不同的按钮指向同一页面,我正在努力的部分是在按下按钮时让页面显示不同的内容。这可能吗?如果有可能,怎么做?
答案 0 :(得分:1)
是的,您可以在导航到另一个页面时发送不同的QueryString参数,例如: 从Page1到TargePage
NavigationService.Navigate(new Uri("/SecondPage.xaml?msg=" +
"From Page1", UriKind.Relative));
从Page2到TargetPage
NavigationService.Navigate(new Uri("/SecondPage.xaml?msg=" +
"From Page2", UriKind.Relative));
在TargetPage
中protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string msg = "";
if (NavigationContext.QueryString.TryGetValue("msg", out msg))
textBlock1.Text = msg;
}
这是一种方式,或者您可以在App
类中拥有一些可在整个应用程序中访问的公共对象。
答案 1 :(得分:0)
正如AD.Net写的那样,你需要做的是在页面之间传递参数。
(没有时间测试代码,只是把它写进去,所以它可能包含错误,如果有人看到它们请编辑出来)
我的页面上有三个按钮,每次单击其中一个按钮时,我将导航到第二页,但每个按钮都会呈现不同背景的页面:
让我们创建一个应用并创建两个页面,比如... Page1.xaml 和 Page2.xaml
现在在 Page1 上使用设计师添加三个按钮,并为此按钮指定点击事件的事件处理程序
<Button x:Name="btn1" Click="btn1_Click" />
<Button x:Name="btn2" Click="btn2_Click" />
<Button x:Name="btn3" Click="btn3_Click" />
(如果您实际上手动编写了代码,事件处理程序应该自动创建,并且应该在代码隐藏中为它们准备存根)
在每个方法中,让我们设置一个简单的命令,如下所示:
private void btn1_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Page2.xaml?parameter=Red",UriKind.Relative));
//You can add different parameter. I'll add Red,Blue and Green
}
差不多......在Page2.xaml上,我将转到codebehind(Page2.xaml.cs文件)并添加这个有趣的小东西:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (NavigationContext.QueryString.ContainsKey("parameter"))
{
string val = NavigationContext.QueryString["parameter"];
switch(val)
{
case "Red":
this.Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red);
break;
case "Blue":
this.Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Blue);
break;
case "Green":
this.Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Green);
break;
default:
this.Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Black);
break;
}
}
}