예제 #1
0
        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;
                        }
                    }
                }
            };
        }