I'm creating an application that consists of multiple filters and a ListView which displays data from an Entity Framework database.
Within my application, I get a strange behavior that occurs within my listview when I add a new item to a list.
When I first load my application, I am able to filter through the list of items that is presented within the `listview` with no problems. However, when Iadd an item to this list, the filter doesn't work at all.
Within my view, I bind my listview the an ObservableCollection which is within a class called CourseListViewModel, like so;
<ListView ... ItemsSource="{Binding CourseList}"> private ObservableCollection<CourseViewModel> courseList = null; public ObservableCollection<CourseViewModel> CourseList { get { return courseList; } set { courseList = value; OnPropertyChanged("CourseList"); } }
And, within my constructor, I have done something like so;
public CourseListViewModel() { CourseList = new ObservableCollection<CourseViewModel>(GetCourse()); CollectionViewSource.GetDefaultView(CourseList).Filter = new Predicate<object>(MainFilter); }
Due to the use of the `singleton pattern`, I add an item within the `CourseViewModel` like so;
public CourseListViewModel Course { get { return CourseListViewModel.Instance(); } } private void Update() { if (this.Mode == Mode.Add) { courserep.AddCourse(this); //courserep is referring to my repository which adds a course to the EF database MessageBox.Show("A course has been added successfully."); this.Course.CourseList = this.Course.GetCourse(); }
As you can see, I use this.Course.CourseList = this.Course.GetCourse(); to update my listview when a new entry has been added.
However, I think that is where my issue lies. Therefore, I was wondering if there was an alternative way to update the listview when a new entry has been added. I have put together a sample of the whole problem whichcan be found here. Any help or guidance is very much appreciated. Thanks in advance.