Windows phone 7 光选择任务+;航行

Windows phone 7 光选择任务+;航行,windows-phone-7,Windows Phone 7,我为他们拍摄了两张照片并添加了事件(MouseButtonDown)。 当第一个图像处理事件以打开库时。第二个图像处理打开相机的事件。 当用户从图库中选择他的图像时,我想导航到下一页。它的导航。但在完成导航过程之前,它会显示主页,然后移到下一页。我不想在用户从图库中选择图像后显示主页。 请帮忙。 提前谢谢 公共部分类主页:PhoneApplicationPage { PhotoChooserTask objPhotoChooser; CameraCaptureTask camer

我为他们拍摄了两张照片并添加了事件(MouseButtonDown)。 当第一个图像处理事件以打开库时。第二个图像处理打开相机的事件。 当用户从图库中选择他的图像时,我想导航到下一页。它的导航。但在完成导航过程之前,它会显示主页,然后移到下一页。我不想在用户从图库中选择图像后显示主页。 请帮忙。 提前谢谢

公共部分类主页:PhoneApplicationPage

{
    PhotoChooserTask objPhotoChooser;
    CameraCaptureTask cameraCaptureTask;

    // Constructor
    public MainPage()
    {
        InitializeComponent();

        objPhotoChooser = new PhotoChooserTask();
        objPhotoChooser.Completed += new EventHandler<PhotoResult>(objPhotoChooser_Completed);

        cameraCaptureTask = new CameraCaptureTask();
        cameraCaptureTask.Completed += new EventHandler<PhotoResult>(objCameraCapture_Completed);         
    }

    void objPhotoChooser_Completed(object sender, PhotoResult e)
    {
        if (e != null && e.TaskResult == TaskResult.OK)
        {
            //Take JPEG stream and decode into a WriteableBitmap object                
            App.CapturedImage = PictureDecoder.DecodeJpeg(e.ChosenPhoto);

            //Delay navigation until the first navigated event
            NavigationService.Navigated += new NavigatedEventHandler(navigateCompleted);
        }
    }


    void navigateCompleted(object sender, EventArgs e)
    {
        //Do the delayed navigation from the main page
        this.NavigationService.Navigate(new Uri("/ImageViewer.xaml", UriKind.RelativeOrAbsolute));
        NavigationService.Navigated -= new NavigatedEventHandler(navigateCompleted);
    }


    void objCameraCapture_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            //Take JPEG stream and decode into a WriteableBitmap object                
            App.CapturedImage = PictureDecoder.DecodeJpeg(e.ChosenPhoto);

            //Delay navigation until the first navigated event
            NavigationService.Navigated += new NavigatedEventHandler(navigateCompleted);          
        }
    }


    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    {
        e.Cancel = true;
    }


    private void image1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        objPhotoChooser.Show();
    }


    private void image2_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        cameraCaptureTask.Show();
    }
{
光电选择器;
CameraCaptureTask CameraCaptureTask;
//建造师
公共主页()
{
初始化组件();
objPhotoChooser=新的PhotoChooserTask();
objPhotoChooser.Completed+=新事件处理程序(objPhotoChooser_Completed);
cameraCaptureTask=新建cameraCaptureTask();
cameraCaptureTask.Completed+=新事件处理程序(objCameraCapture_Completed);
}
void objPhotoChooser_已完成(对象发送方,照片结果e)
{
如果(e!=null&&e.TaskResult==TaskResult.OK)
{
//将JPEG流解码为可写的位图对象
App.CapturedImage=PictureDecoder.DecodeJpeg(e.ChosenPhoto);
//延迟导航,直到第一个导航事件
NavigationService.Navigated+=新的NavigatedEventHandler(navigateCompleted);
}
}
void navigateCompleted(对象发送方,事件参数e)
{
//从主页进行延迟导航
this.NavigationService.Navigate(新Uri(“/ImageViewer.xaml”,UriKind.RelativeOrAbsolute));
NavigationService.Navigated-=新的NavigatedEventHandler(navigateCompleted);
}
void objCameraCapture_已完成(对象发送方,照片结果e)
{
if(e.TaskResult==TaskResult.OK)
{
//将JPEG流解码为可写的位图对象
App.CapturedImage=PictureDecoder.DecodeJpeg(e.ChosenPhoto);
//延迟导航,直到第一个导航事件
NavigationService.Navigated+=新的NavigatedEventHandler(navigateCompleted);
}
}
BackKeyPress上受保护的覆盖无效(System.ComponentModel.CancelEventArgs e)
{
e、 取消=真;
}
私有void image1_MouseLeftButtonDown(对象发送器,MouseButtonEventArgs e)
{
objPhotoChooser.Show();
}
私有void image2_MouseLeftButtonDown(对象发送器,MouseButtonEventArgs e)
{
cameraCaptureTask.Show();
}

据我所知,当您使用其中一个选择器(如照片库或照相机)时,当您的应用程序激活时,它会将其带回您留下的页面。我认为没有办法解决这一问题。您需要做的是在主页代码中捕获激活事件并导航到所需的页面我在那里。
现在,我不完全确定如何将图像从主页传递到目标页。导航服务中似乎没有存储此值的属性。但您可以在应用程序范围的变量ModelView中设置它,甚至可以将其存储在独立的存储区域中。

您可以通过导航解决此问题转到中间空白页,并让该中间页启动任务。任务完成后,您可以正常导航到新页面,只有此空白页会在传输过程中显示。

克里斯正确地认为,某些任务将从您的应用程序中导航出去(有效地将其删除)当用户从任务中返回时,将重新激活您的应用程序。对于相机来说,这尤其困难,据我所知,没有简单的方法可以检测您何时从相机中返回。此外,当连接到调试器或Zune软件时,相机无法工作(至少在我的HTC Surround上是这样),这使得故障排除相当困难

在我的应用程序中,我使用PhoneApplicationService类上的标志来帮助跟踪导航事件的来源。类似于:

PhoneApplicationService.Current.State[“ReturnFromSampleChooser”]=true;

然后,您可以在加载的
PhoneApplicationPage\u
OnNavigatedTo
方法中检查这些标志,并根据需要重定向到所需的页面。只需确保清除标志,小心不要在导航中引起任何循环,因为这可能会使您的应用程序无法通过认证(后退按钮必须始终正常工作)

有关如何使用PhoneApplicationService使用摄像头和设置/清除标志的示例,请查看的源代码。您可以下载完整源代码或浏览