public void RemoveViewModelInstance(IViewModel viewModel)
{
Argument.IsNotNull("viewModel", viewModel);
lock (_lock)
{
viewModel.PropertyChanged -= OnViewModelPropertyChanged;
var viewModelBase = viewModel as ViewModelBase;
if (viewModelBase != null)
{
viewModelBase.CommandExecutedAsync -= OnViewModelCommandExecutedAsync;
}
viewModel.SavingAsync -= OnViewModelSavingAsync;
viewModel.SavedAsync -= OnViewModelSavedAsync;
viewModel.CancelingAsync -= OnViewModelCancelingAsync;
viewModel.CanceledAsync -= OnViewModelCanceledAsync;
viewModel.ClosedAsync -= OnViewModelClosedAsync;
var vmId = viewModel.UniqueIdentifier;
if (_viewModelInstances.ContainsKey(vmId))
{
_viewModelInstances.Remove(vmId);
Log.Debug("Removed view model instance, currently containing '{0}' instances of type '{1}'", _viewModelInstances.Count, ViewModelType);
}
}
}