From d027aa7bef27d3a8cfe9fd842582531926155b35 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 6 Mar 2026 10:33:17 +0000
Subject: [PATCH 1/2] Initial plan
From 44d66a984a6bc229adefec01e0de1ebb731e7188 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 6 Mar 2026 10:43:02 +0000
Subject: [PATCH 2/2] Revamp My Account screens with modern tile-based layout
Co-authored-by: StuartFerguson <16325469+StuartFerguson@users.noreply.github.com>
---
.../MyAccount/MyAccountAddressesPage.xaml | 166 +++++++++++---
.../Pages/MyAccount/MyAccountContactPage.xaml | 124 +++++++----
.../Pages/MyAccount/MyAccountDetailsPage.xaml | 207 +++++++++++++-----
.../Pages/MyAccount/MyAccountPage.xaml | 103 ++++++---
.../Pages/MyAccount/MyAccountPage.xaml.cs | 96 +++++---
5 files changed, 495 insertions(+), 201 deletions(-)
diff --git a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountAddressesPage.xaml b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountAddressesPage.xaml
index e16b0e28a..bb4c2fffe 100644
--- a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountAddressesPage.xaml
+++ b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountAddressesPage.xaml
@@ -2,44 +2,138 @@
+ Shell.NavBarIsVisible="False"
+ Padding="0">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountContactPage.xaml b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountContactPage.xaml
index fc5999cbf..a256db08c 100644
--- a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountContactPage.xaml
+++ b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountContactPage.xaml
@@ -2,46 +2,94 @@
+ Shell.NavBarIsVisible="False"
+ Padding="0">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountDetailsPage.xaml b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountDetailsPage.xaml
index c52902387..1a99c0128 100644
--- a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountDetailsPage.xaml
+++ b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountDetailsPage.xaml
@@ -2,67 +2,156 @@
+ Shell.NavBarIsVisible="False"
+ Padding="0">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountPage.xaml b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountPage.xaml
index f5f62c8a9..c17e081d1 100644
--- a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountPage.xaml
+++ b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountPage.xaml
@@ -3,42 +3,81 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TransactionProcessor.Mobile.Pages.MyAccount.MyAccountPage"
xmlns:common="clr-namespace:TransactionProcessor.Mobile.Pages.Common"
- xmlns:controls="clr-namespace:TransactionProcessor.Mobile.Controls"
- Shell.NavBarIsVisible="False">
+ Shell.NavBarIsVisible="False"
+ Padding="0">
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+ FontSize="13"
+ TextColor="White"
+ Opacity="0.9"
+ HorizontalOptions="Center"/>
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountPage.xaml.cs b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountPage.xaml.cs
index f8a4f0c18..22fc0d17d 100644
--- a/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountPage.xaml.cs
+++ b/TransactionProcessor.Mobile/Pages/MyAccount/MyAccountPage.xaml.cs
@@ -1,4 +1,3 @@
-using CommunityToolkit.Maui.Behaviors;
using TransactionProcessor.Mobile.BusinessLogic.Common;
using TransactionProcessor.Mobile.BusinessLogic.Models;
using TransactionProcessor.Mobile.BusinessLogic.ViewModels.MyAccount;
@@ -15,7 +14,6 @@ public MyAccountPage(MyAccountPageViewModel vm)
this.InitializeComponent();
BindingContext = vm;
-
}
protected override async void OnAppearing()
@@ -27,48 +25,74 @@ protected override async void OnAppearing()
private void LoadOptions(MyAccountPageViewModel viewModel)
{
- this.MyAccountOptionsList.Clear();
+ this.MyAccountOptionsList.Children.Clear();
Int32 rowCount = 0;
foreach (ListViewItem modelOption in viewModel.MyAccountOptions)
{
- Button button = new Button
- {
- Text = modelOption.Title,
- HorizontalOptions = LayoutOptions.FillAndExpand,
- AutomationId = $"{modelOption.Title.Replace(" ", "")}Button",
- };
- button.SetDynamicResource(VisualElement.StyleProperty, "MyAccountButtonStyle");
+ Frame tile = this.CreateOptionTile(modelOption, rowCount);
+ this.MyAccountOptionsList.Children.Add(tile);
+ rowCount++;
+ }
+ }
- Binding commandParameter = new Binding
- {
- Source = new ItemSelected
- {
- SelectedItem = modelOption,
- SelectedItemIndex = rowCount
- }
- };
-
- Binding command = new Binding
- {
- Source = viewModel.OptionSelectedCommand
- };
-
- // Create the behavior and bind it to the command
- EventToCommandBehavior behavior = new EventToCommandBehavior
+ private Frame CreateOptionTile(ListViewItem modelOption, Int32 rowCount)
+ {
+ Frame tile = new Frame();
+ tile.SetDynamicResource(VisualElement.StyleProperty, "SelectionTileFrame");
+ tile.AutomationId = $"{modelOption.Title.Replace(" ", "")}Button";
+
+ String iconSource = modelOption.Title switch
+ {
+ "Addresses" => "homebutton.svg",
+ "Contacts" => "supportbutton.svg",
+ "Account Info" => "reportbutton.svg",
+ "Logout" => "backbutton.svg",
+ _ => "profilebutton.svg"
+ };
+
+ Image icon = new Image
+ {
+ Source = iconSource,
+ HeightRequest = 36,
+ WidthRequest = 36,
+ HorizontalOptions = LayoutOptions.Center
+ };
+
+ Label nameLabel = new Label
+ {
+ Text = modelOption.Title,
+ HorizontalTextAlignment = TextAlignment.Center,
+ HorizontalOptions = LayoutOptions.Center,
+ FontAttributes = FontAttributes.Bold,
+ FontSize = 13
+ };
+ nameLabel.SetDynamicResource(Label.TextColorProperty, "profile");
+
+ tile.Content = new VerticalStackLayout
+ {
+ Spacing = 8,
+ HorizontalOptions = LayoutOptions.Center,
+ Children = { icon, nameLabel }
+ };
+
+ Binding commandParameter = new Binding
+ {
+ Source = new ItemSelected
{
- EventName = "Clicked"
- };
- behavior.SetBinding(EventToCommandBehavior.CommandProperty, command);
- behavior.SetBinding(EventToCommandBehavior.CommandParameterProperty, commandParameter);
+ SelectedItem = modelOption,
+ SelectedItemIndex = rowCount
+ }
+ };
- // Attach the behavior to the button
- button.Behaviors.Add(behavior);
+ Binding command = new Binding("OptionSelectedCommand", source: this.viewModel);
- this.MyAccountOptionsList.Add(button);
+ TapGestureRecognizer tapGesture = new TapGestureRecognizer();
+ tapGesture.SetBinding(TapGestureRecognizer.CommandProperty, command);
+ tapGesture.SetBinding(TapGestureRecognizer.CommandParameterProperty, commandParameter);
- rowCount++;
- }
- }
+ tile.GestureRecognizers.Add(tapGesture);
+ return tile;
+ }
}
\ No newline at end of file