在windows phone 中微软为我们提供了页面间传递参数的解决方案,下面就为大家介绍使用方法,页面传值的案例中我们建立两个页面,一个是MainPage另一个是SecondPage页面;MianPage页面的主要代码为:
< TextBlock x:Name ="Navigation" Text ="导航到第二个页面" Grid.Row ="1" VerticalAlignment ="Center" HorizontalAlignment ="Center" ManipulationStarted ="Navigation_ManipulationStarted" ></ TextBlock >
</ Grid >
MainPage 设置好颜色的效果图:
从 上面代码可以看出我们为名为ContentPanel的Grid的属性Background设置为一个金麒麟色,当点击名为Navigation的 TextBlock元素时,把ContentPanel的Grid的属性Background设置的颜色传递到第二个页面去;Navigation的事件ManipulationStarted 的隐藏代码为:
{
// 获得颜色ARGB值
SolidColorBrush scb = (SolidColorBrush)ContentPanel.Background;
Color c = scb.Color;
// 参数传递格式--知识点①
Uri uri = new Uri( " /SecondPage.xaml?Red= "+c.R+ " &Green= "+c.G+ " &Blue= "+c.B, UriKind.Relative);
this.NavigationService.Source = uri;
e.Complete();
e.Handled = true;
}
页面需要传递的值设置好之后,会导航到第二个页面SecondPage页面,SecondPage.xaml文件中的主要代码为:
<Grid x:Name= " ContentPanel " Grid.Row= " 1 " Margin= " 12,0,12,0 "></Grid>
<TextBlock x:Name= " Navigation " Text= " 导航到第-个页面 " Grid.Row= " 1 " VerticalAlignment= " Center " HorizontalAlignment= " Center " ManipulationStarted= " Navigation_ManipulationStarted "></TextBlock>
</Grid>
SecondPage页面效果:
从上面代码中看一看出我们并没有名为ContentPanel的Grid的属性Background设置颜色值,这里我们会从隐藏文件对其背景颜色进行设置,Navigation的事件ManipulationStarted 的隐藏代码为:
private void Navigation_ManipulationStarted( object sender, ManipulationStartedEventArgs e)
{
this.NavigationService.Navigate( new Uri( " /MainPage.xaml ", UriKind.Relative));
e.Complete();
e.Handled = true;
}
OnNavigatedTo隐藏文件的方法是:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
// 以泛型集合的方式获得传递过来数值--知识点③
IDictionary< string, string> para = this.NavigationContext.QueryString;
if (para.Count> 0)
{
byte r = Byte.Parse(para[ " Red "]);
byte b = Byte.Parse(para[ " Blue "]);
byte g = Byte.Parse(para[ " Green "]);
ContentPanel.Background= new SolidColorBrush(Color.FromArgb( 255,r,g,b));
}
}
此方法获得从MainPage也传递类的参数,我们进行解析,根据解析到的结果设置 SecondPage中ContentPanel.Background属性,这也就完成参数的传递了;
这里参数传递的格式是我们要注意的,参数是在相对URI后紧接着是问号(?),之后就是键值对的形式了(key=value),如果参数是多个,则需要用一个&符号隔开
记住:参数传递的格式多个参数传递需要用&符号隔开;活动页面接受参数时重写的 OnNavigatedTo方法;this.NavigationContext.QueryString接受所有传递到此页面的参数及其值,返回一个字典容器
本文转自shenzhoulong 51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/832028,如需转载请自行联系原作者