我目前正在學習如何使用MVVM模式編寫WPF應用程序。我正在編寫一個小的聯繫人管理器應用程序,所以我的應用程序顯示一個綁定到我的視圖模型的Listbox,以及一組綁定到ListBox.SelectedItem的字段。其中一個領域是聯繫人的照片。WPF&MVVM:更新圖像字段而不會破壞模式
我想使用OpenFileDialog更改編輯部分中的照片,所以Listbox項目會更新,因爲它是所有其他字段。
我首先嚐試更新Image控件的源屬性,但是這樣做,我失去了綁定...然後,我在Button_Click上編寫了一個處理程序來更新Contact.Photo屬性(其類型爲byte [] ),它的工作原理。但不是從「更新控制」綁定到視圖模型,而是綁定從虛擬機到控件,就好像數據來自數據庫。
(在代碼中,LoadPhoto返回一個byte [])我不知道,如果它不破MVVM模式
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);
}
}
...我不知道什麼可以在視圖中進行...這是更新聯繫人對象的正確方法嗎?有沒有人有更好的解決這個問題?
我已經嘗試過使用命令的命令參數(更新對象),以及看起來像我的代碼你的。但是我對這種方式懷疑同樣的事情:VM中的OpenFileDialog是不是打破了這種模式?我會試着讓Cinch看看如何解決這個問題。 – Seb 2011-02-12 18:40:48