2012-02-14 2 views
1

У меня есть простое приложение с одной страницей с кнопкой, которая вызывает 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)» никогда не будет вызван. Я что-то упустил?

Заранее благодарен!

ответ

0

Почему вы передаете это, когда у вас есть только шоу?

Попробуйте переместить cameraCaptureTask из Конструктора и в вызываемый метод

+0

Этому спасибо! Я просто играл с разными способами, чтобы поддерживать код как можно более чистым. Это может быть хромым вопросом, но есть ли причина, по которой создание экземпляра этого объекта в конструкторе ViewModel не будет достаточным? – Cranialsurge

+0

Я верю, потому что камера еще не «загружена». UI/компоненты не загружаются/используются до тех пор, пока не будет запущено событие Loaded. – MyKuLLSKI

0

Используете ли вы WPConnect инструменты, когда вы делаете это с помощью отладчика И устройства, подключенного?

http://msdn.microsoft.com/en-us/library/gg180729(v=VS.92).aspx

Windows Phone Connect Tool позволяет установить последовательный или USB-подключение к устройству без запуска программного обеспечения Zune. При тестировании приложения на физическом устройстве Windows Phone обычно запускается программное обеспечение Zune. Тем не менее, вы не можете тестировать приложения, которые взаимодействуют с задачами выбора фотографий и запуска камеры, в то время как программное обеспечение Zune работает, поскольку оно блокирует локальную базу данных мультимедиа.

+0

Я сделал это, но затем переключился на использование эмулятора. Это тоже не сработало. – Cranialsurge

Смежные вопросы