diff --git a/Qwirkle/cm7/cm7.cs b/Qwirkle/cm7/cm7.cs
new file mode 100644
index 0000000..21194e3
--- /dev/null
+++ b/Qwirkle/cm7/cm7.cs
@@ -0,0 +1,28 @@
+// DataBinding Baby !!
+
+// Applcation se basant sur le site wtatennis.com
+
+// class : Player, Place (Birth Places), Manager, IPersistanceManager
+// enum : Hand (lfet-handed or right-handed)
+
+// Player.cs
+
+public string FirstName
+{
+ get => firstName;
+ set
+ {
+ if(value == firstName) return;
+ firstName = value;
+ OnPropertyChanged();
+ }
+}
+
+private string firstName;
+
+public event PropertyChangedEventHandler PropertyChanged;
+
+public void OnPropertyChanged([CallerMemberName] string propertyName = null)
+{
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+}
\ No newline at end of file
diff --git a/Qwirkle/cm7/cm7.xaml b/Qwirkle/cm7/cm7.xaml
new file mode 100644
index 0000000..3ef2d31
--- /dev/null
+++ b/Qwirkle/cm7/cm7.xaml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Qwirkle/cm7/cm7_codebehind.cs b/Qwirkle/cm7/cm7_codebehind.cs
new file mode 100644
index 0000000..d69013d
--- /dev/null
+++ b/Qwirkle/cm7/cm7_codebehind.cs
@@ -0,0 +1,80 @@
+// Code Behind for PlayerPage
+
+public partial class PlayerPage : ContentPage
+{
+ public Manager Mgr { get; set; } = new Manager(new Stub());
+
+ public int PlayerIndex { get; set; } = 0;
+
+ public RankedPlayer RankedPlayer { get; set; }
+
+ public PlayerPage()
+ {
+ Mgr.LoadPlayers();
+
+ InitializeComponent();
+
+ RankedPlayer = new RankedPlayer(Mgr.Players.ElementAt(2), Mgr);
+ BindingContext = RankedPlayer;
+ }
+
+ public void ButtonClicked(object sender, EventArgs e)
+ {
+ PlayerIndex++;
+ RankedPlayer.Player = Mgr.Players.ElementAt(PlayerIndex); // Source's property changed, not the source itself
+ }
+}
+
+public class RankedPlayer : INotifyPropertyChanged
+{
+ public RankedPlayer(Player player, Manager mgr)
+ {
+ Mgr = mgr;
+ Player = player;
+ }
+
+ private Manager Mgr { get; set; }
+
+ public Player thePlayer
+ {
+ get => thePlayer;
+ set
+ {
+ if(value == thePlayer) return;
+ thePlayer = value;
+ OnPropertyChanged("ThePlayer");
+ OnPropertyChanged(nameof(Rank));
+ }
+ }
+
+ private Player thePlayer;
+
+ public int Rank => Mgr.Players.OrderingByDescending(p => p.Points).ToList().IndexOf(Player) + 1;
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ public void OnPropertyChanged(string propertyName)
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
+}
+
+// ===============================
+
+// Code behind for Players Page
+
+public partial class PlayersPage : ContentPage
+{
+ public Manager Mgr { get; set; } = new Manager(new Stub());
+
+ public PlayersPage()
+ {
+ Mgr.LoadPlayers();
+
+ InitializeComponent();
+
+ BindingContext = Mgr;
+ }
+}
+
+// ===============================
\ No newline at end of file