У меня есть простое приложение с одной страницей с кнопкой, которая вызывает CameraCaptureTask в Windows Phone 7. Для этого я использую шаблон MVVM. Мой код позади чист, и я отключил ответ нажатия кнопки на ViewModel, используя поведение. Мой код выглядит следующим образом:Завершено событие CameraCaptureTask в 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;
}
}
Теперь, когда я бегу мое приложение и нажать на кнопку, которая связывается с RelayCommand в «CaptureCommand», я ударил контрольную точку в 'CaptureCommand() метод, и он выстреливает «Показать() 'метода CameraCaptureTask, в результате чего моя камера подходит к устройству успешно. Однако, как только я завершу съемку и нажмите «Принять», обработчик события «cameraCaptureTask_Completed (object sender, Photoresult e)» никогда не будет вызван. Я что-то упустил?
Заранее благодарен!
Этому спасибо! Я просто играл с разными способами, чтобы поддерживать код как можно более чистым. Это может быть хромым вопросом, но есть ли причина, по которой создание экземпляра этого объекта в конструкторе ViewModel не будет достаточным? – Cranialsurge
Я верю, потому что камера еще не «загружена». UI/компоненты не загружаются/используются до тех пор, пока не будет запущено событие Loaded. – MyKuLLSKI