public CustomBalanceManagerViewModel(IQueryDispatcher queryDispatcher, ICommandDispatcher commandDispatcher)
        {
            _queryDispatcher   = queryDispatcher;
            _commandDispatcher = commandDispatcher;

            AddCustomBalanceCommand = new RelayCommand(() =>
            {
                var item  = new CustomBalance(string.Empty);
                var query = new SearchStateQuery();
                item.SearchesPicker.SetInput(Mapper.Map <SearchState[]>(_queryDispatcher.Execute <SearchStateQuery, DtoSearch[]>(query)).Select(x => new Selectable(x)));
                CustomBalances.Add(item);
            });
            RemoveCustomBalanceCommand = new RelayCommand <CustomBalance>(ExecuteDeleteCommand);

            var customBalanceQuery = new CustomBalanceQuery();
            var customBalances     = _queryDispatcher.Execute <CustomBalanceQuery, DtoCustomBalance[]>(customBalanceQuery);

            CustomBalances = new TrulyObservableCollection <CustomBalance>(Mapper.Map <CustomBalance[]>(customBalances));
            CustomBalances.CollectionChanged += CustomBalancesOnCollectionChanged;
        }
 private void ExecuteDeleteCommand(CustomBalance selected)
 {
     _commandDispatcher.Execute(new DeleteCustomBalanceCommand(Mapper.Map <DtoCustomBalance>(selected)));
     CustomBalances.Remove(selected);
 }