【发布时间】:2012-03-06 06:04:08
【问题描述】:
我有一个简单的应用程序,它有一个带有按钮的单页,该按钮在 Windows Phone 7 中调用 CameraCaptureTask。我为此使用了 MVVM 模式。我背后的代码很干净,我已经使用行为将按钮单击响应卸载到 ViewModel。我的代码如下所示:
public class MainViewModel : ViewModelBase
{
private readonly CameraCaptureTask cameraCaptureTask;
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
if (IsInDesignMode)
{
// Code runs in Blend --> create design time data.
}
else
{
cameraCaptureTask = new CameraCaptureTask();
cameraCaptureTask.Completed += cameraCaptureTask_Completed;
CaptureCommand = new RelayCommand(() => CaptureImage());
}
}
public RelayCommand CaptureCommand { get; set; }
private void cameraCaptureTask_Completed(object sender, PhotoResult e)
{
if (e == null || e.TaskResult != TaskResult.OK)
{
return;
}
else
{
// TODO
}
}
private object CaptureImage()
{
cameraCaptureTask.Show();
return null;
}
}
现在,当我运行我的应用程序并点击绑定到“CaptureCommand”RelayCommand 的按钮时,我在“CaptureCommand()”方法中点击了断点,它触发了 CameraCaptureTask 的“Show()”方法,导致我的相机成功出现在设备上。但是,一旦我完成拍照并点击“接受”,就永远不会调用“cameraCaptureTask_Completed(object sender, Photoresult e)”事件处理程序。我在这里遗漏了什么吗?
提前致谢!
【问题讨论】:
标签: silverlight windows-phone-7 xaml