public AccountsWindowViewModel(IDatabaseProvider <Account> accountProvider, IRuleProvider ruleProvider, IViewModelFactory viewModelFactory) : base(ruleProvider) { this.accountProvider = accountProvider; this.viewModelFactory = viewModelFactory; addAccountCommand = new DelegateCommand(AddAccount, () => CanAdd); LoadFromAccountProvider(); LoadAccountIcons(); accountProvider.DatabaseChanged += (sender, e) => { if (e.ChangedAction == ChangedAction.Add) { var accountViewModel = viewModelFactory.CreateAccountViewModel(e.DataItem); accountList.Add(accountViewModel); } else if (e.ChangedAction == ChangedAction.Remove) { foreach (AccountViewModel account in accountList) { if (account.Name.Equals(e.DataItem.Name)) { accountList.Remove(account); if (HasErrors) { Validate(); } break; } } } }; }