В настоящее время я учусь писать приложение WPF с использованием шаблона MVVM. Я пишу небольшое приложение диспетчера контактов, поэтому мое приложение отображает Listbox, привязанный к моей View Model, и набор полей, привязанных к ListBox.SelectedItem. Одним из этих полей является фотография контакта.
Я бы хотел изменить фотографию в части редактирования, используя OpenFileDialog, чтобы элемент списка был обновлен, как и для всех других полей.
Сначала я попытался обновить свойство источника элемента управления Image, но при этом я теряю привязку ...
Затем я написал обработчик Button_Click для обновления свойства Contact.Photo (его тип byte []), и он работает. Но вместо привязки «элемента управления обновлениями» к модели представления привязка осуществляется от виртуальной машины к элементу управления, как если бы данные поступали из БД.
(В коде LoadPhoto возвращает байт [])
private void Button_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog OpenFileDialog = new OpenFileDialog();
if (OpenFileDialog.ShowDialog() == true)
{
(listbox.SelectedItem as ContactManager.ViewModel.Contact).Photo =
LoadPhoto(OpenFileDialog.FileName);
}
}
Интересно, не нарушает ли это шаблон MVVM ... Я не уверен в том, что можно сделать в представлении ... Это правильный способ обновления объекта Contact? У кого-нибудь есть лучшее решение этой проблемы?