У меня есть изображение, к которому я привязал свойство 'Source' к соответствующему свойству страницы '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 (с которым связано свойство Source моего изображения в представлении), я ожидаю, что изображение будет динамически обновляться с захваченной фотографией. Такого не бывает. Модель представления наследуется от ViewModelBase, который, в свою очередь, реализует INotifyPropertyChanged, так что это не должно быть проблемой. Почему в пользовательском интерфейсе не отображаются какие-либо изменения свойства Capture? Я тут что-то напутал?
Спасибо!