From 35ce76538977b285b1bfb3b8a4e0df2b59007512 Mon Sep 17 00:00:00 2001 From: "titouan.louvet" Date: Fri, 2 Jun 2023 17:37:56 +0200 Subject: [PATCH] Correction of DataContract Problem and Add better version of dataBinding --- src/Banquale/Banquale/App.xaml.cs | 2 +- src/Banquale/Banquale/Model/Manager.cs | 26 ++++++++++++++++--- src/Banquale/Banquale/Model/Transactions.cs | 2 +- .../Banquale/Views/BalancePage.xaml.cs | 1 + .../Banquale/Views/ConnectionPage.xaml.cs | 11 +++++++- 5 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/Banquale/Banquale/App.xaml.cs b/src/Banquale/Banquale/App.xaml.cs index 524b9cf..3c4fac4 100644 --- a/src/Banquale/Banquale/App.xaml.cs +++ b/src/Banquale/Banquale/App.xaml.cs @@ -16,7 +16,7 @@ public partial class App : Application MyManager.DataLoad(); MyManager.Persistence = new DataContractPersistance.DataContractPers(); - //MyManager.DataSave(); + MyManager.DataSave(); InitializeComponent(); diff --git a/src/Banquale/Banquale/Model/Manager.cs b/src/Banquale/Banquale/Model/Manager.cs index 7f5bb92..f6f2ead 100644 --- a/src/Banquale/Banquale/Model/Manager.cs +++ b/src/Banquale/Banquale/Model/Manager.cs @@ -1,12 +1,19 @@ using System; +using System.ComponentModel; +using System.Runtime.CompilerServices; using System.Runtime.Serialization; namespace Banquale.Model { [DataContract] - public class Manager + public class Manager : INotifyPropertyChanged { - [DataMember] + public event PropertyChangedEventHandler PropertyChanged; + + void OnPropertyChanged([CallerMemberName] string propertyName = null) + => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + + [DataMember] public List CustomersList { get; private set; } // devient un set [DataMember] @@ -17,7 +24,10 @@ namespace Banquale.Model get => selectedCustomer; set { + if (selectedCustomer == value) + return; selectedCustomer = value; + OnPropertyChanged(); } } @@ -28,8 +38,11 @@ namespace Banquale.Model get => selectedAccount; set { - selectedAccount = value; - } + if (selectedAccount == value) + return; + selectedAccount = value; + OnPropertyChanged(); + } } private Account selectedAccount; @@ -39,12 +52,17 @@ namespace Banquale.Model get => selectedTransaction; set { + if (selectedTransaction == value) + return; selectedTransaction = value; + OnPropertyChanged(); } } private Transactions selectedTransaction; + + public IPersistenceManager Persistence { get; set; } public Manager(IPersistenceManager persistence) diff --git a/src/Banquale/Banquale/Model/Transactions.cs b/src/Banquale/Banquale/Model/Transactions.cs index 424de11..bd8c660 100644 --- a/src/Banquale/Banquale/Model/Transactions.cs +++ b/src/Banquale/Banquale/Model/Transactions.cs @@ -3,7 +3,7 @@ using System.Runtime.Serialization; namespace Banquale.Model { - [DataContract] + [DataContract(IsReference = true)] public class Transactions : INotifyPropertyChanged { diff --git a/src/Banquale/Banquale/Views/BalancePage.xaml.cs b/src/Banquale/Banquale/Views/BalancePage.xaml.cs index 3baa9ef..f9f3d38 100644 --- a/src/Banquale/Banquale/Views/BalancePage.xaml.cs +++ b/src/Banquale/Banquale/Views/BalancePage.xaml.cs @@ -18,6 +18,7 @@ public partial class BalancePage : ContentPage public async void Transaction_Clicked(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) { Mgr.SelectedTransaction = Mgr.SelectedAccount.TransactionsList[0]; + //Mgr.SelectedTransaction = Mgr.PropertyChanged; await Shell.Current.Navigation.PushAsync(new TransactionsPage()); } public async void Balance_Clicked(object sender, EventArgs e) diff --git a/src/Banquale/Banquale/Views/ConnectionPage.xaml.cs b/src/Banquale/Banquale/Views/ConnectionPage.xaml.cs index dfd2327..6dec496 100644 --- a/src/Banquale/Banquale/Views/ConnectionPage.xaml.cs +++ b/src/Banquale/Banquale/Views/ConnectionPage.xaml.cs @@ -27,12 +27,21 @@ public partial class ConnectionPage : ContentPage return; } + + /*foreach(var Cu in Mgr.CustomersList) + { + if (Cu.Id == currentId) + { + Mgr.SelectedCustomer = Mgr.CustomersList[currentId+1]; + } + }*/ + //if(int.Parse(currentId) in Mgr.CustomersList) // FONCTIONNE PAS //{ // Mgr.SelectedCustomer = Mgr.CustomersList[int.Parse(currentId)]; //} - Mgr.SelectedCustomer = Mgr.CustomersList[0]; // 0 à changer + Mgr.SelectedCustomer = Mgr.CustomersList[0];// 0 à changer await Navigation.PushModalAsync(new SwitchAccountPage());