0

Photochooser Task を使用して、画像をロードし、すぐに別のページに渡す必要があります。ただし、次のコードを実装すると空白が表示されます。

private void LoadPicture_Click(object sender, RoutedEventArgs e)
{
    PhotoChooserTask photoChooserTask;
    photoChooserTask = new PhotoChooserTask();
    photoChooserTask.Completed += new EventHandler<PhotoResult>(photoChooserTask_Completed);
    photoChooserTask.Show();

    NavigationService.Navigate(new Uri("/Page1.xaml", UriKind.Relative));
}

void photoChooserTask_Completed(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {
        System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
        bmp.SetSource(e.ChosenPhoto);

        Page1 p1 = new Page1();
        p1.encodeImg.Source = bmp;
    }
    else
    {
        MessageBox.Show("Image Loading Failed.");
    }
}

上記の問題を修正する際に提案してください。

ありがとう!

4

3 に答える 3

1

解決しましたか?そうでない場合は、このようなものを使用できます。photoChooseTask ハンドラで bitmapImage を保存します

 PhoneApplicationService.Current.State["yourparam"] = bmp;

次に、Page1でbitmapImageを取得します

BitmapImage bitmapGet = PhoneApplicationService.Current.State["yourparam"] as BitmapImage;

これを使用する方法は次のとおりです。

void photoChooserTask_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
            bmp.SetSource(e.ChosenPhoto);
            //save the bitmapImage 
            PhoneApplicationService.Current.State["yourparam"] = bmp;


        }
        else
        {
            MessageBox.Show("Image Loading Failed.");
        }


        NavigationService.Navigate(new Uri("/Page1.xaml", UriKind.Relative));
    }

あなたのページ1

      protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
      {
           //get the bitmapImage
           BitmapImage bitmapGet = PhoneApplicationService.Current.State["yourparam"] as BitmapImage;

           //set the bitmpaImage 
           img.Source = bitmapGet;

           base.OnNavigatedTo(e);
      }

PhoneApplicationService.Current.State の詳細:)

于 2013-10-17T05:32:57.807 に答える
0

ナビゲーションは完了したイベントの後に行う必要があります。photochooser.show() はメイン アプリケーション スレッドを抑制します。したがって、取得した画像ストリームのみを渡すことができます。そのため、ナビゲーション ステートメントを完了イベント ハンドラーにシフトし、isolatedstoragesettings.applicationsettings を使用して画像を保存し、2 ページ目に戻します。

于 2013-10-17T07:47:49.767 に答える