private void onDataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { VideoItemViewModel oldModel = e.OldValue as VideoItemViewModel; loadObservable(oldModel, false); VideoItemViewModel newModel = e.NewValue as VideoItemViewModel; loadObservable(newModel, true); loadUI(); }
void loadObservable(VideoItemViewModel model, bool isPlus) { if (model == null) { return; } if (isPlus) { model.PropertyChanged += onPropertyChanged; model.PlusSignModel.PropertyChanged += plusSignPropertyChanged; model.SearchedResultModel.PropertyChanged += searcherPropertyChanged; model.ControlViewModel.PropertyChanged += controlPropertyChanged; } else { model.PropertyChanged -= onPropertyChanged; model.PlusSignModel.PropertyChanged -= plusSignPropertyChanged; model.SearchedResultModel.PropertyChanged -= searcherPropertyChanged; model.ControlViewModel.PropertyChanged -= controlPropertyChanged; } }