none
实现页面间图片的传递 RRS feed

  • 问题

  • 在mainpage中 调用 photochoosertask,在相册中选取照片,我想讲PhotoChooserCompleted(object sender, PhotoResult e)的结果传递给另一个页面而不是现在的页面,那么PhotoChooserCompleted(object sender, PhotoResult e)的函数如何写?谢谢

    2012年7月25日 2:56

答案

  • 你好,

    传递所选中的图片,可以定义一个PhotoResult类型的属性在两个页面间进行传递。操作方法为在第二个页面中定义一个PhotoResult的属性,然后在第一个页面的OnNavigatedFrom事件中给第二个页面的PhotoResult属性赋值。

    具体请参考以下代码:

    MainPage

            public PhotoResult r { get; set; }
            void photoChooserTask_Completed(object sender, PhotoResult e)
            {
                r = new PhotoResult();
                if (e.TaskResult == TaskResult.OK)
                {
                    r = e;//保存当前选择结果
                }
            }
    
            private void button2_Click(object sender, RoutedEventArgs e)
            {
                NavigationService.Navigate(new Uri("/Page1.xaml", UriKind.Relative));
            }
    
            protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
            {
                Page1 page1 = e.Content as Page1;
                if (page1 != null)
                {
                    page1.r = r;//赋值给Page1页面
                }
            }

    Page1

            public PhotoResult r { get; set; }
            protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
            {
                System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
                bmp.SetSource(r.ChosenPhoto);
                image1.Source = bmp;//在Image控件中显示
            }

    • 已标记为答案 Shi Ding 2012年8月7日 5:54
    2012年7月26日 7:40
  • 我想问一下:为什么不放在App中呢?

    到底是哪种方式好一些啊?


    Stephen Chen

    很好的问题,我觉得如果说要传递的参数会被多个页面用到的情况下,应该放在App中更方便一些,这样从每个页面直接通过Application.Current调用了.

    如果仅仅是两个页面中传低的参数,可以考虑之前给出的方法。

    • 已标记为答案 Shi Ding 2012年8月7日 5:54
    2012年8月6日 15:21

全部回复

  • 你好,

    传递所选中的图片,可以定义一个PhotoResult类型的属性在两个页面间进行传递。操作方法为在第二个页面中定义一个PhotoResult的属性,然后在第一个页面的OnNavigatedFrom事件中给第二个页面的PhotoResult属性赋值。

    具体请参考以下代码:

    MainPage

            public PhotoResult r { get; set; }
            void photoChooserTask_Completed(object sender, PhotoResult e)
            {
                r = new PhotoResult();
                if (e.TaskResult == TaskResult.OK)
                {
                    r = e;//保存当前选择结果
                }
            }
    
            private void button2_Click(object sender, RoutedEventArgs e)
            {
                NavigationService.Navigate(new Uri("/Page1.xaml", UriKind.Relative));
            }
    
            protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
            {
                Page1 page1 = e.Content as Page1;
                if (page1 != null)
                {
                    page1.r = r;//赋值给Page1页面
                }
            }

    Page1

            public PhotoResult r { get; set; }
            protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
            {
                System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
                bmp.SetSource(r.ChosenPhoto);
                image1.Source = bmp;//在Image控件中显示
            }

    • 已标记为答案 Shi Ding 2012年8月7日 5:54
    2012年7月26日 7:40
  • 我想问一下:为什么不放在App中呢?

    到底是哪种方式好一些啊?


    Stephen Chen

    2012年7月27日 3:38
  • 我想问一下:为什么不放在App中呢?

    到底是哪种方式好一些啊?


    Stephen Chen

    很好的问题,我觉得如果说要传递的参数会被多个页面用到的情况下,应该放在App中更方便一些,这样从每个页面直接通过Application.Current调用了.

    如果仅仅是两个页面中传低的参数,可以考虑之前给出的方法。

    • 已标记为答案 Shi Ding 2012年8月7日 5:54
    2012年8月6日 15:21