My DataGrid control's bound to an instance of a ListCollectionView in the view model and in its getter, I check for the underlying property AllThings. This far, the populating of the backing field _allThings's been performed in the constructor of the view model and since the data in the DB only changed over night, it was fully sufficient.
However, as of now, there'll be new instances of Thing created and shot into the DB. Supposing that a user clicks a button that fires an event handled in the method UpdateData(Object, RoutedEventArgs), what's the appropriate approach to re-rendering the data grid?
Is it necessary for the property AllThings to be of type ObservableCollection or will it be sufficient to go with IEnumerable? (In the future I might want to update the grid if something relevant changes in the DB at the moment it's not of any concern.)
The reason for me being so curious of the proper approach is the difference of where the data comes from. Usually, the data comes from a binding on the same control that's causing the event of new data available. Here, the control (button) will notify that there's some new data but it comes from another source, namely the DB. I'm not certain if one should handle it differently and, if so, how.