我有这个代码,我用它来显示一个按钮,允许用户从他的库中选择一个图像并将其用作我的应用程序的背景.
所以我创建了一个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.s.
这看起来很奇怪,因为我在同一个类中有另一个PhotoChooserTask,这个工作正常.
它出什么问题了?
VisualStudio甚至不会告诉我什么是异常,所以没有办法弄明白!
编辑:
我刚刚发现,当我打电话时会抛出异常
pct_edit.Show();
在按钮的点击事件中.
最佳答案 您应该将选择器定义为班级中的一个字段.要求您拥有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);
}
}