我有MainWindow和用戶控件AddEditData。兩者都使用它自己的視圖模型表示 MainWindowViewModel和AddEditViewModel。更新列表框收集立即保存
在左側,我有列表框和數據項列表,右側的AddEditView顯示了在列表框上選擇的數據細節。在AddEdit上,我有保存從文本框中保存數據的按鈕。
在引擎蓋下一切正常,數據正確保存在數據庫中,但數據更改細節不立即可見,更改是在下一個應用程序可見。執行。
我知道INotifyPropertyChanged,我首先在我的列表框數據集合上實現。下面的代碼
MainWindowViewModel
public ObservableCollection<Book> Books
{
get { return books; }
set {
books = value;
OnPropertyChanged("Books");
}
}
MainWindow.xaml
<ListBox Name="listBoxData"
DataContext="{Binding Source={StaticResource MainWindowViewModelDataSource}}"
ItemTemplate="{DynamicResource BookTemplate}"
ItemsSource="{Binding Books}"
SelectedItem="{Binding SelectedBook, Mode=TwoWay}">
在AddEditViewModel我添加命令來保存按鈕,將數據保存到數據庫,並使用Mediator模式發送消息給MainWindow通知該數據已保存。
Repository.Save(book);
Mediator.NotifyColleagues("SaveData", book);
再次,如何保存操作後立即更新列表框項目?
更新 我添加UpdateSourceTrigger到的PropertyChanged
<ListBox Name="listBoxData"
DataContext="{Binding Source={StaticResource MainWindowViewModelDataSource}}"
ItemTemplate="{DynamicResource BookTemplate}"
ItemsSource="{Binding Books, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedBook, Mode=TwoWay}">
但是這沒有什麼變化,依然列表框保存數據後相同。
'AddEditViewModel'如何初始化,如果保存,您修改初始'Book'對象,並且'Book'類實現'INotifyPropertyChanged',那麼更改應該立即可見。 –