Billing/Billing.Shared/Views/AccountPage.xaml.cs
2022-02-26 12:36:32 +08:00

53 lines
2.0 KiB
C#

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<Account>), typeof(AccountPage));
public decimal Balance => (decimal)GetValue(BalanceProperty);
public decimal Asset => (decimal)GetValue(AssetProperty);
public decimal Liability => (decimal)GetValue(LiabilityProperty);
public ObservableCollection<Account> Accounts => (ObservableCollection<Account>)GetValue(AccountsProperty);
public Command AddAccount { get; }
private readonly ObservableCollection<Account> accounts;
public AccountPage()
{
AddAccount = new Command(OnAddAccount);
accounts = new ObservableCollection<Account>();
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);
}
}
}