2012-02-14 2 views
0

У меня есть изображение, которое я обязан свойство «источником» для данной страницы, соответствующее свойство «ViewModel» под названием «Capture» следующим образом:источник изображения не обновляется динамически

Просмотр Код:

<Image Height="150" HorizontalAlignment="Left" Margin="50,583,0,0" x:Name="img_FlickrPic" Stretch="Fill" VerticalAlignment="Top" Width="200" Grid.Row="1" Source="{Binding Capture}"/> 

Соответствующий ViewModel код

общественного класса SubmitViewModel: ViewModelBase {

private CameraCaptureTask cameraCapture; 

    public ImageSource Capture { get; set; } 

    public RelayCommand CaptureCommand { get; set; } 

    /// <summary> 
    /// Initializes a new instance of the SubmitViewModel class. 
    /// </summary> 
    public SubmitViewModel() 
    {     
     Capture = new BitmapImage(); 
     CaptureCommand = new RelayCommand(() => CapturePhoto()); 
    } 

    private object CapturePhoto() 
    { 
     cameraCapture = new CameraCaptureTask(); 
     cameraCapture.Completed += cameraCapture_Completed; 
     cameraCapture.Show(); 
     return null; 
    }  

    void cameraCapture_Completed(object sender, PhotoResult e) 
    { 
     if (e == null || e.TaskResult != TaskResult.OK) 
     { 
      return; 
     } 

     BitmapImage bitmap = new BitmapImage(); 
     bitmap.SetSource(e.ChosenPhoto); 
     Capture = bitmap; 
    }    

} 

Как вы заметили, я связал кнопку захвата с моделью просмотра, а также используя «поведение» вместо события щелчка, чтобы сохранить чистый код. Когда я нажимаю кнопку, камера вызывается и как только я нажимаю захват, а затем нажимаю кнопку «Принять», событие «cameraCapture_Completed» срабатывает, как ожидалось, и код там выполняется. Однако последний шаг, на котором задано свойство «Capture» (с которым связано свойство исходного изображения моего изображения в представлении), я ожидаю, что изображение будет динамически обновляться с захваченной фотографией. Этого не происходит. Модель viewmodel наследует от «ViewModelBase», которая, в свою очередь, реализует INotifyPropertyChanged, поэтому это не должно быть проблемой. Почему никакие изменения в свойстве 'Capture' не отражаются в изображении в пользовательском интерфейсе? Я что-то здесь путаю?

Спасибо!

ответ

0

Вам необходимо вручную поднять ChangedPropertyEvent с именем свойства «Capture». Что-то вроде этого.

ImageSource mCapture; 
public ImageSource Capture { 
     get {return mCapture;} 
     set { mCapture = value; 
      RaiseChangedProperty("Capture"); 
      } 
} 
+0

Doh! Благодаря тонну :) – Cranialsurge

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