예제 #1
0
 private void LoadFromBillProvider()
 {
     foreach (Bill bill in billProvider.Items)
     {
         var billViewModel = viewModelFactory.CreateBillViewModel(bill);
         allBills.Add(billViewModel);
     }
 }
예제 #2
0
        public BillListViewModel(IDatabaseProvider <Bill> billProvider,
                                 IViewModelFactory viewModelFactory,
                                 ISelectedExpenseProvider selectedExpense
                                 )
        {
            this.billProvider     = billProvider;
            this.selectedExpense  = selectedExpense;
            this.viewModelFactory = viewModelFactory;

            LoadFromBillProvider();

            selectedExpense.SelectedExpenseChanged += (sender, e) =>
            {
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Bills)));
            };

            billProvider.DatabaseChanged += (sender, e) =>
            {
                if (e.ChangedAction == ChangedAction.Add)
                {
                    allBills.Add(viewModelFactory.CreateBillViewModel(e.DataItem));
                }
                else if (e.ChangedAction == ChangedAction.Remove)
                {
                    foreach (BillViewModel bill in allBills)
                    {
                        if (bill.Name.Equals(e.DataItem.Name))
                        {
                            allBills.Remove(bill);
                            break;
                        }
                    }
                }
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Bills)));
            };
        }