4

我有这个代码,我用它来显示一个按钮,允许用户从他的库中选择一个图像并将其用作我的应用程序的背景。

所以我创建了一个PhotoChooserTask,将其设置为显示相机并将其绑定到任务完成时必须执行的方法。该按钮将通过显示 来启动任务PhotoChooserTask。完成操作非常简单,我只需设置一个布尔值并更新图像源。

PhotoChooserTask pct_edit = new PhotoChooserTask();
pct_edit.ShowCamera = true;
pct_edit.Completed += pct_edit_Completed;
Button changeImageButton = new Button { Content = "Change Image" };
changeImageButton.Tap += (s, e) =>
{
    pct_edit.Show();
};


void pct_edit_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            bi.SetSource(e.ChosenPhoto);
            IsRebuildNeeded = true;
        }
    }

问题是它不会显示PhotoChooserTask但它会给我一个例外,带我去

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
        if (Debugger.IsAttached)
        {
            Debugger.Break();
        }
    }

App.xaml.cs.

这看起来很奇怪,因为我PhotoChooserTask在同一个班上有另一个,这个工作正常。

它出什么问题了?

VisualStudio 甚至不会告诉我有什么异常,所以没有办法弄清楚!

编辑:

我刚刚发现我打电话时抛出了异常

pct_edit.Show(); 

在按钮的点击事件中。

4

2 回答 2

1

You can use try to check what is the problem

changeImageButton.Tap += (s, e) =>
{
    try
    {
       PhotoChooserTask pct_edit = new PhotoChooserTask();
       pct_edit.ShowCamera = true;
       pct_edit.Completed += (s,e) =>
       {
           if (e.TaskResult == TaskResult.OK)
           {
              var bi = new BitmapImage() // maybe you didn't initialize bi?
              bi.SetSource(e.ChosenPhoto);
              IsRebuildNeeded = true;
           }
       }
       pct_edit.Show();
    }
    catch (Exception ex)
    {
       Message.Show(ex.Message);
    }
};

Put brakepoint on Message, then you can check everything inside ex.

于 2015-01-21T07:53:13.747 回答
1

您应该将您的选择器定义为您班级中的一个字段。要求您具有 PhotoChooser 的页面范围。然后,您在构造函数中订阅它。这在MSDN here上有所说明

class SomeClass
{
   readonly PhotoChooserTask pct_edit = new PhotoChooserTask();

   SomeClass()
   {
       pct_edit.ShowCamera = true;
       pct_edit .Completed += new EventHandler<PhotoResult>(pct_edit_Completed);
   }
}
于 2013-08-07T14:06:41.503 回答