У меня есть класс BookViewModel
с некоторыми свойствами, одним из которых является ObservableCollection
.Но у меня проблемы с обновлением его значения.Это мой случай:
public class BookViewModel : INotifyPropertyChanged
{
private IEnumerable<Book> booksList;
private ObservableCollection<Chapter> selectedChapters = new ObservableCollection<Chapter>();
public BookViewModel()
{
}
public BookViewModel(List<Book> booksList)
{
this.BooksList = booksList;
}
// ...
public ObservableCollection<Book> SelectedChapters
{
get
{
return this.selectedChapters;
}
set
{
this.selectedChapters = value;
this.OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
В одном UserControl моего приложения я делаю:
private TrainViewModel booksViewModel;
// ...
booksViewModel = new BookViewModel(booksList); // booksList comes from other site
this.DataContext = this.booksViewModel;
И в другом UserControl, который создается динамически как дочерний элемент из предыдущего UserControl я делаю:
private TrainViewModel booksViewModel;
// ...
booksViewModel = new BookViewModel();
this.DataContext = this.booksViewModel; // Different constructor
На этой последней странице у меня есть несколько флажков, которые изменяют мое свойство selectedChapters
, добавляя или удаляя из него элементы:
// When some checkbox is checked
this.booksViewModel.SelectedChapters.Add(selectedChapter);
// When some checkbox is unchecked
this.booksViewModel.SelectedChapters.Remove(selectedChapter);
Если каждый раз, когда флажок установлен или снят, я делаю:
Debug.Print(this.booksViewModel.SelectedChapters.Count()); // Always print out 1!!
Мне интересно, вызывает ли проблема использование одного и того же ViewModel, но с разными экземплярами в каждом представлении (вещь new
),.