using System.Collections.ObjectModel; using Billing.Models; using Billing.UI; using Xamarin.Forms; namespace Billing.Views { public partial class AccountPage : BillingPage { private static readonly BindableProperty BalanceProperty = BindableProperty.Create(nameof(Balance), typeof(decimal), typeof(AccountPage)); private static readonly BindableProperty AssetProperty = BindableProperty.Create(nameof(Asset), typeof(decimal), typeof(AccountPage)); private static readonly BindableProperty LiabilityProperty = BindableProperty.Create(nameof(Liability), typeof(decimal), typeof(AccountPage)); private static readonly BindableProperty AccountsProperty = BindableProperty.Create(nameof(Accounts), typeof(ObservableCollection), typeof(AccountPage)); public decimal Balance => (decimal)GetValue(BalanceProperty); public decimal Asset => (decimal)GetValue(AssetProperty); public decimal Liability => (decimal)GetValue(LiabilityProperty); public ObservableCollection Accounts => (ObservableCollection)GetValue(AccountsProperty); public Command AddAccount { get; } private readonly ObservableCollection accounts; public AccountPage() { AddAccount = new Command(OnAddAccount); accounts = new ObservableCollection(); SetValue(AccountsProperty, accounts); InitializeComponent(); } private async void OnAddAccount() { if (Tap.IsBusy) { return; } using (Tap.Start()) { var page = new AddAccountPage(); page.AccountChecked += AccountChecked; await Navigation.PushAsync(page); } } private void AccountChecked(object sender, AccountEventArgs e) { Helper.Debug(e.Account.ToString()); accounts.Add(e.Account); } } }