我最近将我的WP7应用程序升级为Mango,并且在使用相机时遇到了一些问题。下面的代码用于在7.0上工作,但在7.1中,完成的处理程序在对话框显示之前触发,因此我无法捕获结果。拍照后,手机会显示“正在恢复...”,这是以前从未做过的事情。
var dlg = new CameraCaptureTask();
dlg.Completed += (s, e) =>
{
if (e.TaskResult == TaskResult.OK) {
BitmapImage bmp = new BitmapImage();
bmp.SetSource(e.ChosenPhoto);
//var img = new Image();
//img.Source = bmp;
string caption = string.Empty;
var inputDialog = new InputPrompt()
{
Title = "Caption",
Message = "Enter caption/description for snapshot",
};
inputDialog.Completed += (ss, ee) =>
{
if (ee.PopUpResult == PopUpResult.Ok)
{
caption = ee.Result;
var snap = SnapshotBLL.AddSnapshot(recipeId, bmp, caption);
onComplete(null, new SnapshotEventArgs(snap));
}
};
inputDialog.Show();
}
};
dlg.Show();
MSDN文档似乎显示了我的代码的变体,但我无法再获得相机捕获任务的结果。
答案 0 :(得分:5)
假设您的样本来自单一方法,我不希望它在Mango之前工作过。
应创建CameraCaptureTask
并在页面的构造函数中指定回调,以使其正常工作。
类似的东西:
public partial class MainPage : PhoneApplicationPage
{
private CameraCaptureTask cct = new CameraCaptureTask();
public MainPage()
{
InitializeComponent();
cct.Completed += new EventHandler<PhotoResult>(cct_Completed);
}
private void cct_Completed(object sender, PhotoResult e)
{
// Do whatever here
}
private void SomeEventHandler(object sender, RoutedEventArgs e)
{
cct.Show();
}
}
这适用于7.0&amp; 7.1