Windows Phone开发教程8

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Windows Phone笔记(8)页面间数据共享

通过上一篇笔记我们知道了如何将源页面(调用Navigation函数的页面)的数据传递到目标页面中,但是当我们把这个顺序反过来,即把目标页面的数据返回给源页面时该怎么去做呢?在这篇笔记中我们给出三个解决方案。

1.通过App类保存页面共享数据

在Windows Phone笔记中的第一篇笔记中我提到过:App类通常用来存储整个应用程序所使用的资源。该类从Application类中派生,我们通过Application.Current属性可以返回当前应用程序的Application对象,我们可以把理解为当前应用程序的实例,或者说一个全局变量,在各个页面都可以很轻易的访问到它。

和以前一样,我们通过一个简单的示例来学习如何使用APP类在页面间共享数据,和上一篇笔记中给出的示例类似,我们首先在APP.xaml.cs也就是为App类中定义一个类型为Color?的属性,用于存储在页面间需要共享的数据:

1public partial class App : Application

2 {

3//用于在页面间共享数据的公共属性,可空类型

4public Color? ShareColor { get; set; }

5 }

复制代码

接着是这个示例的第一个页面MainPage.xaml的前端代码:

1

2

3

/>

4

复制代码

MainPage.xmal.cs后台程序处理代码:

1public partial class MainPage : PhoneApplicationPage

2 {

3 Random ran = new Random();

4//构造函数

5public MainPage()

6 {

7 InitializeComponent();

8 }

9

10private void tblNavigationSecondPage_ManipulationStarted(object sender, ManipulationStartedEventArgs e)

11 {

12//ContentPanel背景颜色不为默认值时(Brush类null)

13if (this.ContentPanel.Background is SolidColorBrush) 14 {

15(Application.Current as App).ShareColor = (ContentPanel.Background as SolidColorBrush).Color;

16

17this.NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));

18 plete();

19 e.Handled = true;

20 }

21 }

22

23protected override void OnManipulationStarted(ManipulationStartedEventArgs e)

24 {

25this.ContentPanel.Background = new SolidColorBrush(Color.FromArgb

26 (255, (byte)ran.Next(255), (byte)ran.Next(255), (byte)ran.Next(255)));

27

28base.OnManipulationStarted(e);

29 }

30

31//当页面变为框架(Frame)中的活动页面时调用。

32protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)

33 {

34Color? shareColor = (Application.Current as App).ShareColor;

35if (shareColor != null)

36 {

37this.ContentPanel.Background = new SolidColorBrush(shareColor.Value);

38 }

39

40base.OnNavigatedTo(e);

41 }

42 }

43

复制代码

接着是我们的第二个页面SecondPage.xmal的前端代码:

1

2

3

4 />

5

复制代码

相关文档
最新文档