private async Task UpdateVMAsync() { var binder = DataContext as Binder; if (binder != null && !binder.IsDisposed) { if (_vm == null) { _vm = new BinderCoverVM(binder, _animationStarter); await _vm.OpenAsync().ConfigureAwait(false); RaisePropertyChanged_UI(nameof(VM)); } else if (_vm.Binder != binder) { await DisposeVMAsync().ConfigureAwait(false); _vm = new BinderCoverVM(binder, _animationStarter); await _vm.OpenAsync().ConfigureAwait(false); RaisePropertyChanged_UI(nameof(VM)); } } else { await DisposeVMAsync().ConfigureAwait(false); } }
private async Task DisposeVMAsync() { var vm = _vm; if (vm != null) { await vm.CloseAsync(); vm.Dispose(); VM = null; } }