diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_And_BarTextColor_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_And_BarTextColor_Verify.png
new file mode 100644
index 000000000000..e9c987973fbc
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_And_BarTextColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_Gradient_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_Gradient_Verify.png
new file mode 100644
index 000000000000..07a1408e0597
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_Gradient_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_Solid_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_Solid_Verify.png
new file mode 100644
index 000000000000..1bee5f3e58b1
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_Solid_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..59debb70aaaf
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..eb31c9b7c2aa
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..c004025f2998
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..070420b52cd5
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarTextColor_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarTextColor_Verify.png
new file mode 100644
index 000000000000..1c648e209035
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_BarTextColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_FlowDirection_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_FlowDirection_Verify.png
new file mode 100644
index 000000000000..a6cf5348af91
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_FlowDirection_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_IconImageSource_Change_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_IconImageSource_Change_Verify.png
new file mode 100644
index 000000000000..db0f19aaddfd
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_IconImageSource_Change_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InitialState_VerifyFunctionalState_1.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InitialState_VerifyFunctionalState_1.png
new file mode 100644
index 000000000000..161f7e316cde
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InitialState_VerifyFunctionalState_1.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InitialState_VerifyFunctionalState_2.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InitialState_VerifyFunctionalState_2.png
new file mode 100644
index 000000000000..c9466e5a5200
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InitialState_VerifyFunctionalState_2.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InitialState_VerifyVisualState.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InitialState_VerifyVisualState.png
new file mode 100644
index 000000000000..0035a0e71c35
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InitialState_VerifyVisualState.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InsertTabAt_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InsertTabAt_Verify.png
new file mode 100644
index 000000000000..7709eb292c55
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_InsertTabAt_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemSource_And_SelectedItems_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemSource_And_SelectedItems_Verify.png
new file mode 100644
index 000000000000..7782831a2cca
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemSource_And_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemSource_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemSource_Verify.png
new file mode 100644
index 000000000000..26e2fffa274c
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemTemplate_And_ItemSource_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemTemplate_And_ItemSource_Verify.png
new file mode 100644
index 000000000000..709a42305fb4
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemTemplate_And_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemTemplate_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemTemplate_Verify.png
new file mode 100644
index 000000000000..5aa74e4e619c
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_ItemTemplate_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png
new file mode 100644
index 000000000000..e66fc9a8142f
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png
new file mode 100644
index 000000000000..a9bd2f15efda
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedItems_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedItems_Verify.png
new file mode 100644
index 000000000000..a0def41c1ee5
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..a3317de354b5
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..683f709e3ecb
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/TabbedPage_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/CoreViews/CorePageView.cs b/src/Controls/tests/TestCases.HostApp/CoreViews/CorePageView.cs
index aee1b1dbd1c5..6d65e9a7f795 100644
--- a/src/Controls/tests/TestCases.HostApp/CoreViews/CorePageView.cs
+++ b/src/Controls/tests/TestCases.HostApp/CoreViews/CorePageView.cs
@@ -87,6 +87,7 @@ public override string ToString()
new GalleryPageFactory(() => new SwitchControlPage(), "Switch Feature Matrix"),
new GalleryPageFactory(() => new SwitchCoreGalleryPage(), "Switch Gallery"),
new GalleryPageFactory(() => new SwipeViewCoreGalleryPage(), "SwipeView Gallery"),
+ new GalleryPageFactory(() => new TabbedPageControlPage(), "TabbedPage Feature Matrix"),
new GalleryPageFactory(() => new TimePickerControlPage(), "Time Picker Feature Matrix"),
new GalleryPageFactory(() => new TimePickerCoreGalleryPage(), "Time Picker Gallery"),
new GalleryPageFactory(() => new WebViewCoreGalleryPage(), "WebView Gallery"),
diff --git a/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageControlPage.xaml b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageControlPage.xaml
new file mode 100644
index 000000000000..4fdc158aeb87
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageControlPage.xaml
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageControlPage.xaml.cs b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageControlPage.xaml.cs
new file mode 100644
index 000000000000..1a4d01c1f966
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageControlPage.xaml.cs
@@ -0,0 +1,31 @@
+namespace Maui.Controls.Sample;
+
+public class TabbedPageControlPage : NavigationPage
+{
+ private TabbedPageViewModel _viewModel;
+ public TabbedPageControlPage()
+ {
+ _viewModel = new TabbedPageViewModel();
+ PushAsync(new TabbedPageControlMainPage(_viewModel));
+ }
+}
+public partial class TabbedPageControlMainPage : TabbedPage
+{
+ private TabbedPageViewModel _viewModel;
+
+ public TabbedPageControlMainPage(TabbedPageViewModel viewModel)
+ {
+ InitializeComponent();
+ _viewModel = viewModel;
+ BindingContext = _viewModel;
+ var button = new Button { AutomationId = "Options", Text = "Options" };
+ button.Clicked += NavigateToOptionsPage_Clicked;
+ NavigationPage.SetTitleView(this, button);
+ }
+
+ private async void NavigateToOptionsPage_Clicked(object sender, EventArgs e)
+ {
+ BindingContext = _viewModel = new TabbedPageViewModel();
+ await Navigation.PushModalAsync(new TabbedPageOptionsPage(_viewModel));
+ }
+}
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageOptionsPage.xaml b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageOptionsPage.xaml
new file mode 100644
index 000000000000..3e9dc6d30b2c
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageOptionsPage.xaml
@@ -0,0 +1,211 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageOptionsPage.xaml.cs b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageOptionsPage.xaml.cs
new file mode 100644
index 000000000000..4694d2eca1b5
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageOptionsPage.xaml.cs
@@ -0,0 +1,320 @@
+namespace Maui.Controls.Sample;
+
+public partial class TabbedPageOptionsPage : ContentPage
+{
+ private TabbedPageViewModel _viewModel;
+
+ public TabbedPageOptionsPage(TabbedPageViewModel viewModel)
+ {
+ InitializeComponent();
+ _viewModel = viewModel;
+ BindingContext = _viewModel;
+ }
+
+ private void ApplyButton_Clicked(object sender, EventArgs e)
+ {
+ Navigation.PopModalAsync();
+ }
+
+ private void BarBackgroundBrushButton_Clicked(object sender, EventArgs e)
+ {
+ var button = (Button)sender;
+ switch (button.Text)
+ {
+ case "Gradient":
+ _viewModel.BarBackground = new LinearGradientBrush
+ {
+ StartPoint = new Point(0, 0),
+ EndPoint = new Point(1, 1),
+ GradientStops = new GradientStopCollection
+ {
+ new GradientStop { Color = Colors.Red, Offset = 0.0f },
+ new GradientStop { Color = Colors.Blue, Offset = 1.0f }
+ }
+ };
+ break;
+ case "Solid":
+ _viewModel.BarBackground = new SolidColorBrush(Colors.Blue);
+ break;
+ }
+ }
+
+ private void BarTextColorButton_Clicked(object sender, EventArgs e)
+ {
+ var button = (Button)sender;
+ switch (button.Text)
+ {
+ case "Black":
+ _viewModel.BarTextColor = Colors.Black;
+ break;
+ case "Green":
+ _viewModel.BarTextColor = Colors.Green;
+ break;
+ }
+ }
+
+ private void SelectedTabColorButton_Clicked(object sender, EventArgs e)
+ {
+ var button = (Button)sender;
+ switch (button.Text)
+ {
+ case "Orange":
+ _viewModel.SelectedTabColor = Colors.Orange;
+ break;
+ case "Purple":
+ _viewModel.SelectedTabColor = Colors.Purple;
+ break;
+ }
+ }
+
+ private void UnselectedTabColorButton_Clicked(object sender, EventArgs e)
+ {
+ var button = (Button)sender;
+ switch (button.Text)
+ {
+ case "LightGray":
+ _viewModel.UnselectedTabColor = Colors.LightGray;
+ break;
+ case "DarkGray":
+ _viewModel.UnselectedTabColor = Colors.DarkGray;
+ break;
+ }
+ }
+
+ private void OnIsEnabledChanged(object sender, CheckedChangedEventArgs e)
+ {
+ var radioButton = sender as RadioButton;
+ if (radioButton != null && radioButton.IsChecked)
+ {
+ _viewModel.IsEnabled = false;
+ }
+ }
+
+ private void OnFlowDirectionChanged(object sender, CheckedChangedEventArgs e)
+ {
+ var radioButton = sender as RadioButton;
+ if (radioButton != null && radioButton.IsChecked)
+ {
+ _viewModel.FlowDirection = radioButton.Content.ToString() == "LeftToRight" ? FlowDirection.LeftToRight : FlowDirection.RightToLeft;
+ }
+ }
+
+ private void ItemsSourceOne_Clicked(object sender, EventArgs e)
+ {
+ _viewModel.ItemsSource = _viewModel.ItemsSourceOne;
+ }
+
+ private void ItemsSourceTwo_Clicked(object sender, EventArgs e)
+ {
+ _viewModel.ItemsSource = _viewModel.ItemsSourceTwo;
+ }
+
+ private void OnTemplateOneClicked(object sender, EventArgs e)
+ {
+ _viewModel.ItemTemplate = new DataTemplate(() =>
+ {
+ var label = new Label
+ {
+ FontAttributes = FontAttributes.Bold,
+ FontSize = 18,
+ HorizontalOptions = LayoutOptions.Center
+ };
+ label.SetBinding(Label.AutomationIdProperty, "Id");
+ label.SetBinding(Label.TextProperty, "Name");
+
+ var image = new Image
+ {
+ HorizontalOptions = LayoutOptions.Center,
+ WidthRequest = 200,
+ HeightRequest = 200
+ };
+ image.SetBinding(Image.SourceProperty, "ImageUrl");
+
+ var contentPage = new ContentPage
+ {
+ AutomationId = "ContentPageOne",
+ IconImageSource = "bank.png",
+ Content = new StackLayout
+ {
+ Padding = new Thickness(5, 25),
+ Children =
+ {
+ new Label
+ {
+ Text = "Template One",
+ FontAttributes = FontAttributes.Bold,
+ FontSize = 18,
+ HorizontalOptions = LayoutOptions.Center
+ },
+ label,
+ image
+ }
+ }
+ };
+ contentPage.SetBinding(ContentPage.TitleProperty, new Binding("Name"));
+ return contentPage;
+ });
+ }
+
+ private void OnTemplateTwoClicked(object sender, EventArgs e)
+ {
+ _viewModel.ItemTemplate = new DataTemplate(() =>
+ {
+ var image = new Image
+ {
+ HorizontalOptions = LayoutOptions.Center,
+ WidthRequest = 140,
+ HeightRequest = 140
+ };
+ image.SetBinding(Image.SourceProperty, "ImageUrl");
+
+ var label = new Label
+ {
+ FontAttributes = FontAttributes.Bold,
+ FontSize = 18,
+ HorizontalOptions = LayoutOptions.Center,
+ VerticalOptions = LayoutOptions.Center
+ };
+ label.SetBinding(Label.AutomationIdProperty, "Id");
+ label.SetBinding(Label.TextProperty, "Name");
+
+ var addButton = new Button
+ {
+ AutomationId = "AddTabButton",
+ Text = "Add Tab",
+ BackgroundColor = Colors.LightGreen,
+ HeightRequest = 50
+ };
+ addButton.Clicked += (s, e) =>
+ {
+ if (((Button)s).BindingContext is TabbedPageItemSource item)
+ {
+ var count = _viewModel.ItemsSource.Count + 1;
+
+ _viewModel.ItemsSource.Add(new TabbedPageItemSource
+ {
+ Name = $"Tab {count}",
+ Id = $"Tab{count}Label",
+ ImageUrl = "dotnet_bot.png"
+ });
+ }
+ };
+
+ var removeButton = new Button
+ {
+ AutomationId = "RemoveTabButton",
+ Text = "Remove Tab",
+ BackgroundColor = Colors.Tomato,
+ HeightRequest = 50
+ };
+ removeButton.Clicked += (s, e) =>
+ {
+ if (((Button)s).BindingContext is TabbedPageItemSource item)
+ {
+ if (_viewModel.ItemsSource.Any())
+ _viewModel.ItemsSource.RemoveAt(_viewModel.ItemsSource.Count - 1);
+ }
+ };
+
+ var insertTabAtButton = new Button
+ {
+ AutomationId = "InsertTabAtButton",
+ Text = "Insert Tab",
+ BackgroundColor = Colors.LightBlue,
+ HeightRequest = 50
+ };
+ insertTabAtButton.Clicked += (s, e) =>
+ {
+ if (((Button)s).BindingContext is TabbedPageItemSource item)
+ {
+ var count = _viewModel.ItemsSource.Count + 1;
+
+ _viewModel.ItemsSource.Insert(1, new TabbedPageItemSource
+ {
+ Name = $"NEW TAB",
+ Id = "NewTabLabel",
+ ImageUrl = "dotnet_bot.png"
+ });
+ }
+ };
+
+ var verticalStack = new VerticalStackLayout
+ {
+ Spacing = 10,
+ HorizontalOptions = LayoutOptions.Center,
+ Children =
+ {
+ new HorizontalStackLayout
+ {
+ Spacing = 1,
+ Children =
+ {
+ addButton,
+ removeButton
+ }
+ },
+ insertTabAtButton
+ }
+ };
+
+ var contentPage = new ContentPage
+ {
+ AutomationId = "ContentPageTwo",
+ IconImageSource = "fruitsicon.png",
+ Content = new VerticalStackLayout
+ {
+ Padding = new Thickness(5, 25),
+ Spacing = 40,
+ HorizontalOptions = LayoutOptions.Center,
+ Children =
+ {
+ new Label
+ {
+ Text = "Template Two",
+ FontAttributes = FontAttributes.Bold,
+ FontSize = 18,
+ HorizontalOptions = LayoutOptions.Center
+ },
+
+ new HorizontalStackLayout
+ {
+ VerticalOptions = LayoutOptions.Center,
+ Spacing=1,
+ Children =
+ {
+ image,
+ label,
+ verticalStack
+ }
+ }
+ }
+ }
+ };
+ contentPage.SetBinding(ContentPage.TitleProperty, new Binding("Name"));
+
+ var changeIconButton = new Button
+ {
+ AutomationId = "ChangeIconButton",
+ Text = "Change Icon Image",
+ BackgroundColor = Colors.Orange,
+ HeightRequest = 50
+ };
+ changeIconButton.Clicked += (s, e) =>
+ {
+ contentPage.IconImageSource = "star_flyout.png";
+ };
+
+ verticalStack.Children.Add(changeIconButton);
+ return contentPage;
+ });
+ }
+
+ private void SelectItemButton_Clicked(object sender, EventArgs e)
+ {
+ var index = int.Parse(selectedItemEntry.Text);
+ if (index > 0 && index <= _viewModel.ItemsSource.Count)
+ {
+ _viewModel.SelectedItem = _viewModel.ItemsSource[index - 1];
+ }
+ }
+}
diff --git a/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageViewModel.cs b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageViewModel.cs
new file mode 100644
index 000000000000..18d3909ca465
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/FeatureMatrix/TabbedPage/TabbedPageViewModel.cs
@@ -0,0 +1,242 @@
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+using System.Collections.ObjectModel;
+
+namespace Maui.Controls.Sample;
+
+public class TabbedPageViewModel : INotifyPropertyChanged
+{
+ private Brush _barBackground = new SolidColorBrush(Colors.White);
+ private Color _barTextColor = Colors.Red;
+ private Color _selectedTabColor = Colors.Orange;
+ private Color _unselectedTabColor = Colors.LightGray;
+ private bool _isEnabled = true;
+ private FlowDirection _flowDirection = FlowDirection.LeftToRight;
+ private ObservableCollection _itemsSource;
+ private DataTemplate _itemTemplate;
+ private object _selectedItem;
+#if ANDROID
+ public ObservableCollection ItemsSourceOne { get; } = new ObservableCollection
+ {
+ new TabbedPageItemSource { Name = "TAB 1", Id = "Tab1Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 2", Id = "Tab2Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 3", Id = "Tab3Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 4", Id = "Tab4Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 5", Id = "Tab5Label", ImageUrl = "dotnet_bot.png" }
+ };
+ public ObservableCollection ItemsSourceTwo { get; } = new ObservableCollection
+ {
+ new TabbedPageItemSource { Name = "APPLE", Id="AppleLabel", ImageUrl = "apple.png" },
+ new TabbedPageItemSource { Name = "CHERRY", Id="CherryLabel", ImageUrl = "cherry.png" },
+ new TabbedPageItemSource { Name = "GRAPE", Id="GrapeLabel", ImageUrl = "grape.png" },
+ new TabbedPageItemSource { Name = "KIWI", Id="KiwiLabel", ImageUrl = "kiwi.png" },
+ new TabbedPageItemSource { Name = "MANGO", Id="MangoLabel", ImageUrl = "mango.png" }
+ };
+#else
+ public ObservableCollection ItemsSourceOne { get; } = new ObservableCollection
+ {
+ new TabbedPageItemSource { Name = "TAB 1", Id="Tab1Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 2", Id="Tab2Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 3", Id="Tab3Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 4", Id="Tab4Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 5", Id="Tab5Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 6", Id="Tab6Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 7", Id="Tab7Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 8", Id="Tab8Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 9", Id="Tab9Label", ImageUrl = "dotnet_bot.png" },
+ new TabbedPageItemSource { Name = "TAB 10", Id="Tab10Label", ImageUrl = "dotnet_bot.png" }
+ };
+ public ObservableCollection ItemsSourceTwo { get; } = new ObservableCollection
+ {
+ new TabbedPageItemSource { Name = "APPLE", Id="AppleLabel", ImageUrl = "apple.png" },
+ new TabbedPageItemSource { Name = "CHERRY", Id="CherryLabel", ImageUrl = "cherry.png" },
+ new TabbedPageItemSource { Name = "GRAPE", Id="GrapeLabel", ImageUrl = "grape.png" },
+ new TabbedPageItemSource { Name = "KIWI", Id="KiwiLabel", ImageUrl = "kiwi.png" },
+ new TabbedPageItemSource { Name = "LEMON", Id="LemonLabel", ImageUrl = "lemon.png" },
+ new TabbedPageItemSource { Name = "MANGO", Id="MangoLabel", ImageUrl = "mango.png" },
+ new TabbedPageItemSource { Name = "ORANGE", Id="OrangeLabel", ImageUrl = "orange.png" },
+ new TabbedPageItemSource { Name = "PINEAPPLE", Id="PineappleLabel", ImageUrl = "pineapple.png" },
+ new TabbedPageItemSource { Name = "POMEGRANATE", Id="PomegranateLabel", ImageUrl = "pomegranate.png" },
+ new TabbedPageItemSource { Name = "STRAWBERRY", Id="StrawberryLabel", ImageUrl = "strawberry.png" }
+ };
+#endif
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ public TabbedPageViewModel()
+ {
+ ItemsSource = ItemsSourceOne;
+ SelectedItem = ItemsSourceOne.FirstOrDefault();
+ ItemTemplate = new DataTemplate(() =>
+ {
+ var label = new Label
+ {
+ FontAttributes = FontAttributes.Bold,
+ FontSize = 18,
+ HorizontalOptions = LayoutOptions.Center
+ };
+ label.SetBinding(Label.AutomationIdProperty, "Id");
+ label.SetBinding(Label.TextProperty, "Name");
+
+ var image = new Image
+ {
+ HorizontalOptions = LayoutOptions.Center,
+ WidthRequest = 200,
+ HeightRequest = 200
+ };
+ image.SetBinding(Image.SourceProperty, "ImageUrl");
+
+ var page = new ContentPage
+ {
+ AutomationId = "ContentPageOne",
+ IconImageSource = "bank.png",
+ Content = new StackLayout
+ {
+ Padding = new Thickness(5, 25),
+ Children =
+ {
+ new Label
+ {
+ Text = "Template One",
+ FontAttributes = FontAttributes.Bold,
+ FontSize = 18,
+ HorizontalOptions = LayoutOptions.Center
+ },
+ label,
+ image
+ }
+ }
+ };
+ page.SetBinding(ContentPage.TitleProperty, new Binding("Name"));
+ return page;
+ });
+ }
+
+ public ObservableCollection ItemsSource
+ {
+ get => _itemsSource;
+ set
+ {
+ if (_itemsSource != value)
+ {
+ _itemsSource = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ public DataTemplate ItemTemplate
+ {
+ get => _itemTemplate;
+ set
+ {
+ if (_itemTemplate != value)
+ {
+ _itemTemplate = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ public object SelectedItem
+ {
+ get => _selectedItem;
+ set
+ {
+ if (_selectedItem != value)
+ {
+ _selectedItem = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ public Brush BarBackground
+ {
+ get => _barBackground;
+ set
+ {
+ if (_barBackground != value)
+ {
+ _barBackground = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ public Color BarTextColor
+ {
+ get => _barTextColor;
+ set
+ {
+ if (_barTextColor != value)
+ {
+ _barTextColor = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ public Color SelectedTabColor
+ {
+ get => _selectedTabColor;
+ set
+ {
+ if (_selectedTabColor != value)
+ {
+ _selectedTabColor = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ public Color UnselectedTabColor
+ {
+ get => _unselectedTabColor;
+ set
+ {
+ if (_unselectedTabColor != value)
+ {
+ _unselectedTabColor = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ public bool IsEnabled
+ {
+ get => _isEnabled;
+ set
+ {
+ if (_isEnabled != value)
+ {
+ _isEnabled = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ public FlowDirection FlowDirection
+ {
+ get => _flowDirection;
+ set
+ {
+ if (_flowDirection != value)
+ {
+ _flowDirection = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
+}
+
+public class TabbedPageItemSource
+{
+ public string Name { get; set; }
+ public string Id { get; set; }
+ public string ImageUrl { get; set; }
+}
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/apple.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/apple.png
new file mode 100644
index 000000000000..e9810aa56f40
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/apple.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/cherry.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/cherry.png
new file mode 100644
index 000000000000..eac31826e40c
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/cherry.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/fruitsicon.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/fruitsicon.png
new file mode 100644
index 000000000000..4a61f05e33a1
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/fruitsicon.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/grape.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/grape.png
new file mode 100644
index 000000000000..53af735aad04
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/grape.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/kiwi.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/kiwi.png
new file mode 100644
index 000000000000..81fefe795562
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/kiwi.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/lemon.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/lemon.png
new file mode 100644
index 000000000000..b45593ec730e
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/lemon.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/mango.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/mango.png
new file mode 100644
index 000000000000..c680b7fbe6f6
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/mango.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/orange.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/orange.png
new file mode 100644
index 000000000000..077ffafb1366
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/orange.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/pineapple.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/pineapple.png
new file mode 100644
index 000000000000..83f95a8fc5ae
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/pineapple.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/pomegranate.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/pomegranate.png
new file mode 100644
index 000000000000..48a71efee700
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/pomegranate.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Resources/Images/strawberry.png b/src/Controls/tests/TestCases.HostApp/Resources/Images/strawberry.png
new file mode 100644
index 000000000000..2684739a753f
Binary files /dev/null and b/src/Controls/tests/TestCases.HostApp/Resources/Images/strawberry.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_And_BarTextColor_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_And_BarTextColor_Verify.png
new file mode 100644
index 000000000000..e1ed16691933
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_And_BarTextColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_Gradient_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_Gradient_Verify.png
new file mode 100644
index 000000000000..aea28da8a61e
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_Gradient_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_Solid_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_Solid_Verify.png
new file mode 100644
index 000000000000..caa4f3031bbf
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_Solid_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..2d79e1969794
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..818a0fa51e45
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..9e418d018490
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..8c2cda740253
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarTextColor_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarTextColor_Verify.png
new file mode 100644
index 000000000000..c69d374d7673
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_BarTextColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_IconImageSource_Change_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_IconImageSource_Change_Verify.png
new file mode 100644
index 000000000000..b54f6f606963
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_IconImageSource_Change_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InitialState_VerifyFunctionalState_1.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InitialState_VerifyFunctionalState_1.png
new file mode 100644
index 000000000000..4c45befebc21
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InitialState_VerifyFunctionalState_1.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InitialState_VerifyFunctionalState_2.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InitialState_VerifyFunctionalState_2.png
new file mode 100644
index 000000000000..2ba845070020
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InitialState_VerifyFunctionalState_2.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InitialState_VerifyVisualState.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InitialState_VerifyVisualState.png
new file mode 100644
index 000000000000..e773e6ee47c9
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InitialState_VerifyVisualState.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InsertTabAt_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InsertTabAt_Verify.png
new file mode 100644
index 000000000000..608662b772e1
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_InsertTabAt_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemSource_And_SelectedItems_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemSource_And_SelectedItems_Verify.png
new file mode 100644
index 000000000000..8bef3d2e34f8
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemSource_And_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemSource_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemSource_Verify.png
new file mode 100644
index 000000000000..a969a90462db
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemTemplate_And_ItemSource_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemTemplate_And_ItemSource_Verify.png
new file mode 100644
index 000000000000..aeab62dff2c9
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemTemplate_And_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemTemplate_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemTemplate_Verify.png
new file mode 100644
index 000000000000..e7c668971533
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_ItemTemplate_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png
new file mode 100644
index 000000000000..ee5188318dc8
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png
new file mode 100644
index 000000000000..86958aaf42f5
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedItems_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedItems_Verify.png
new file mode 100644
index 000000000000..a50fe904e8fe
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..9153eb4c6397
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..805770aed3be
Binary files /dev/null and b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/TabbedPage_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/TabbedPageFeatureTests.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/TabbedPageFeatureTests.cs
new file mode 100644
index 000000000000..6bd68b0b2e87
--- /dev/null
+++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/TabbedPageFeatureTests.cs
@@ -0,0 +1,431 @@
+using NUnit.Framework;
+using UITest.Appium;
+using UITest.Core;
+
+namespace Microsoft.Maui.TestCases.Tests.Issues;
+
+[Category(UITestCategories.TabbedPage)]
+public class TabbedPageFeatureTests : _GalleryUITest
+{
+ public const string TabbedPageFeatureMatrix = "TabbedPage Feature Matrix";
+ public override string GalleryPageName => TabbedPageFeatureMatrix;
+
+ public TabbedPageFeatureTests(TestDevice testDevice) : base(testDevice)
+ {
+ }
+
+#if TEST_FAILS_ON_IOS // Issue Link - https://github.com/dotnet/maui/issues/34605
+
+ [Test, Order(1)]
+ public void TabbedPage_InitialState_VerifyVisualState()
+ {
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+#if TEST_FAILS_ON_WINDOWS // Issue Link - https://github.com/dotnet/maui/issues/14572
+
+ [Test, Order(2)]
+ public void TabbedPage_InitialState_VerifyFunctionalState()
+ {
+ App.WaitForElement("TAB 3");
+ App.Tap("TAB 3");
+ App.WaitForElement("Tab3Label");
+ VerifyScreenshot(TestContext.CurrentContext.Test.MethodName + "_1");
+ App.WaitForElement("TAB 4");
+ App.Tap("TAB 4");
+ App.WaitForElement("Tab4Label");
+ VerifyScreenshot(TestContext.CurrentContext.Test.MethodName + "_2");
+ }
+#endif
+
+ [Test, Order(3)]
+ public void TabbedPage_BarBackground_Gradient_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("GradientBarBackgroundButton");
+ App.Tap("GradientBarBackgroundButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+#if TEST_FAILS_ON_WINDOWS // Issue Link - https://github.com/dotnet/maui/issues/14572
+
+ [Test, Order(4)]
+ public void TabbedPage_BarBackground_Solid_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("SolidBarBackgroundButton");
+ App.Tap("SolidBarBackgroundButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ App.WaitForElement("TAB 2");
+ App.Tap("TAB 2");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(5)]
+ public void TabbedPage_BarBackground_And_BarTextColor_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("SolidBarBackgroundButton");
+ App.Tap("SolidBarBackgroundButton");
+ App.WaitForElement("GreenBarTextButton");
+ App.Tap("GreenBarTextButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ App.WaitForElement("TAB 3");
+ App.Tap("TAB 3");
+ VerifyScreenshot();
+ }
+#endif
+
+ [Test, Order(6)]
+ public void TabbedPage_BarBackground_With_SelectedTabColor_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("SolidBarBackgroundButton");
+ App.Tap("SolidBarBackgroundButton");
+ App.WaitForElement("PurpleSelectedButton");
+ App.Tap("PurpleSelectedButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(7)]
+ public void TabbedPage_BarBackground_With_UnselectedTabColor_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("SolidBarBackgroundButton");
+ App.Tap("SolidBarBackgroundButton");
+ App.WaitForElement("DarkGrayUnselectedButton");
+ App.Tap("DarkGrayUnselectedButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(8)]
+ public void TabbedPage_BarTextColor_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("GreenBarTextButton");
+ App.Tap("GreenBarTextButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(9)]
+ public void TabbedPage_BarTextColor_And_SelectedTabColor_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("GreenBarTextButton");
+ App.Tap("GreenBarTextButton");
+ App.WaitForElement("PurpleSelectedButton");
+ App.Tap("PurpleSelectedButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(10)]
+ public void TabbedPage_BarTextColor_And_UnselectedTabColor_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("GreenBarTextButton");
+ App.Tap("GreenBarTextButton");
+ App.WaitForElement("DarkGrayUnselectedButton");
+ App.Tap("DarkGrayUnselectedButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(11)]
+ public void TabbedPage_SelectedTabColor_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("OrangeSelectedButton");
+ App.Tap("OrangeSelectedButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(12)]
+ public void TabbedPage_UnselectedTabColor_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("DarkGrayUnselectedButton");
+ App.Tap("DarkGrayUnselectedButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+#if TEST_FAILS_ON_WINDOWS // Issue Link - https://github.com/dotnet/maui/issues/14572
+
+ [Test, Order(13)]
+ public void TabbedPage_SelectedAndUnselectedTabColor_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("PurpleSelectedButton");
+ App.Tap("PurpleSelectedButton");
+ App.WaitForElement("LightGrayUnselectedButton");
+ App.Tap("LightGrayUnselectedButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot(TestContext.CurrentContext.Test.MethodName + "_1");
+ App.WaitForElement("TAB 2");
+ App.Tap("TAB 2");
+ VerifyScreenshot(TestContext.CurrentContext.Test.MethodName + "_2");
+ }
+#endif
+
+#if TEST_FAILS_ON_IOS && TEST_FAILS_ON_CATALYST && TEST_FAILS_ON_WINDOWS// Issue Link - https://github.com/dotnet/maui/issues/31121, https://github.com/dotnet/maui/issues/14572
+
+ [Test, Order(14)]
+ public void TabbedPage_FlowDirection_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("RightToLeftFlowRadio");
+ App.Tap("RightToLeftFlowRadio");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ var rect = App.WaitForElement("ContentPageOne").GetRect();
+ App.DragCoordinates(rect.X, rect.CenterY(), rect.Width - 10, rect.CenterY());
+ Thread.Sleep(1000);
+ App.WaitForElement("Tab2Label");
+ VerifyScreenshot();
+ }
+#endif
+
+ [Test, Order(15)]
+ public void TabbedPage_ItemTemplate_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("TemplateTwoButton");
+ App.Tap("TemplateTwoButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(16)]
+ public void TabbedPage_ItemTemplate_And_ItemSource_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("TemplateTwoButton");
+ App.Tap("TemplateTwoButton");
+ App.WaitForElement("ItemsSourceTwoButton");
+ App.Tap("ItemsSourceTwoButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("AppleLabel");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(17)]
+ public void TabbedPage_ItemSource_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("ItemsSourceTwoButton");
+ App.Tap("ItemsSourceTwoButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("AppleLabel");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(18)]
+ public void TabbedPage_ItemSource_And_SelectedItems_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("ItemsSourceTwoButton");
+ App.Tap("ItemsSourceTwoButton");
+ App.WaitForElement("SelectedItemEntry");
+ App.ClearText("SelectedItemEntry");
+ App.EnterText("SelectedItemEntry", "2");
+ App.WaitForElement("SelectItemButton");
+ App.Tap("SelectItemButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("CherryLabel");
+ VerifyScreenshot();
+ }
+
+ [Test, Order(19)]
+ public void TabbedPage_SelectedItems_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("SelectedItemEntry");
+ App.ClearText("SelectedItemEntry");
+ App.EnterText("SelectedItemEntry", "3");
+ App.WaitForElement("SelectItemButton");
+ App.Tap("SelectItemButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab3Label");
+ VerifyScreenshot();
+ }
+
+#if TEST_FAILS_ON_ANDROID && TEST_FAILS_ON_CATALYST && TEST_FAILS_ON_IOS && TEST_FAILS_ON_WINDOWS // Android does not show the More button, Issue Link - https://github.com/dotnet/maui/issues/31377, https://github.com/dotnet/maui/issues/14572
+
+ [Test, Order(20)]
+ public void TabbedPage_MoreButton_Verify()
+ {
+ App.WaitForElement("Tab1Label");
+ App.Tap("Tab1Label");
+#if IOS || MACCATALYST
+ App.WaitForElement("More");
+ App.Tap("More");
+#endif
+ VerifyScreenshot(TestContext.CurrentContext.Test.MethodName + "_1");
+ App.WaitForElement("TAB 6");
+ App.Tap("TAB 6");
+ App.WaitForElement("Tab6Label");
+ VerifyScreenshot(TestContext.CurrentContext.Test.MethodName + "_2");
+ }
+#endif
+ [Test, Order(21)]
+ public void TabbedPage_AddTab_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("TemplateTwoButton");
+ App.Tap("TemplateTwoButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("AddTabButton");
+ App.Tap("AddTabButton");
+ App.WaitForElement("AddTabButton");
+ App.Tap("AddTabButton");
+ App.WaitForElement("Tab1Label");
+#if IOS || MACCATALYST
+ App.WaitForElement("More");
+ App.Tap("More");
+#endif
+ App.WaitForElement("TAB 7");
+ App.Tap("TAB 7");
+ App.WaitForElement("Tab7Label");
+ App.WaitForElement("TAB 7");
+ App.Tap("TAB 7");
+ App.WaitForElement("Tab7Label");
+ }
+#endif
+
+#if TEST_FAILS_ON_WINDOWS // Issue Link - https://github.com/dotnet/maui/issues/14572
+
+ [Test, Order(22)]
+ public void TabbedPage_RemoveTab_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("TemplateTwoButton");
+ App.Tap("TemplateTwoButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+#if ANDROID
+ for (int i = 0; i < 2; i++)
+ {
+ App.WaitForElement("RemoveTabButton");
+ App.Tap("RemoveTabButton");
+ }
+#else
+ for (int i = 0; i < 7; i++)
+ {
+ App.WaitForElement("RemoveTabButton");
+ App.Tap("RemoveTabButton");
+ }
+#endif
+ App.WaitForElement("Tab1Label");
+ App.WaitForNoElement("TAB 4");
+ }
+
+#if TEST_FAILS_ON_IOS // Issue Link - https://github.com/dotnet/maui/issues/34605
+ [Test, Order(23)]
+ public void TabbedPage_InsertTabAt_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("TemplateTwoButton");
+ App.Tap("TemplateTwoButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("RemoveTabButton");
+ App.Tap("RemoveTabButton");
+ App.WaitForElement("RemoveTabButton");
+ App.Tap("RemoveTabButton");
+ App.WaitForElement("InsertTabAtButton");
+ App.Tap("InsertTabAtButton");
+ App.WaitForElement("NEW TAB");
+ App.Tap("NEW TAB");
+ App.WaitForElement("NewTabLabel");
+ VerifyScreenshot();
+ }
+#endif
+#endif
+
+#if TEST_FAILS_ON_IOS // Issue Link - https://github.com/dotnet/maui/issues/34605
+ [Test, Order(24)]
+ public void TabbedPage_IconImageSource_Change_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("TemplateTwoButton");
+ App.Tap("TemplateTwoButton");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("ChangeIconButton");
+ App.Tap("ChangeIconButton");
+ App.WaitForElement("Tab1Label");
+ VerifyScreenshot();
+ }
+#endif
+ [Test, Order(25)]
+ public void TabbedPage_IsEnabled_Verify()
+ {
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForElement("IsEnabledFalseRadio");
+ App.Tap("IsEnabledFalseRadio");
+ App.WaitForElement("ApplyButton");
+ App.Tap("ApplyButton");
+ App.WaitForElement("Tab1Label");
+ App.WaitForElement("Options");
+ App.Tap("Options");
+ App.WaitForNoElement("ApplyButton");
+ }
+}
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarBackground_Gradient_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarBackground_Gradient_Verify.png
new file mode 100644
index 000000000000..771b64d4f58a
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarBackground_Gradient_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..cea06ac1be1e
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..cf504770dde2
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..da7d09bb349c
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..5c0d39b14a77
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarTextColor_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarTextColor_Verify.png
new file mode 100644
index 000000000000..39b6fd57546f
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_BarTextColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_IconImageSource_Change_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_IconImageSource_Change_Verify.png
new file mode 100644
index 000000000000..7f550262db9f
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_IconImageSource_Change_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_InitialState_VerifyVisualState.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_InitialState_VerifyVisualState.png
new file mode 100644
index 000000000000..9d888a440ab8
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_InitialState_VerifyVisualState.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemSource_And_SelectedItems_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemSource_And_SelectedItems_Verify.png
new file mode 100644
index 000000000000..c7608ede02f5
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemSource_And_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemSource_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemSource_Verify.png
new file mode 100644
index 000000000000..3ec46762b8e8
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemTemplate_And_ItemSource_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemTemplate_And_ItemSource_Verify.png
new file mode 100644
index 000000000000..d8a046980d3f
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemTemplate_And_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemTemplate_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemTemplate_Verify.png
new file mode 100644
index 000000000000..d3337a63efdf
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_ItemTemplate_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_SelectedItems_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_SelectedItems_Verify.png
new file mode 100644
index 000000000000..8414d68a90cc
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..89b1fa06807c
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..f3f0468b45cb
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/TabbedPage_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_And_BarTextColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_And_BarTextColor_Verify.png
new file mode 100644
index 000000000000..8f2c328e1e30
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_And_BarTextColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_Gradient_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_Gradient_Verify.png
new file mode 100644
index 000000000000..cb88e67d22cb
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_Gradient_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_Solid_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_Solid_Verify.png
new file mode 100644
index 000000000000..af9673c95c20
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_Solid_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..9f31ddeb124e
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..00f95cdab56e
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..946a04b9192e
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..2d1c31429701
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarTextColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarTextColor_Verify.png
new file mode 100644
index 000000000000..1b8f3e0c7460
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_BarTextColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_IconImageSource_Change_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_IconImageSource_Change_Verify.png
new file mode 100644
index 000000000000..0cc0f57cb9aa
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_IconImageSource_Change_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InitialState_VerifyFunctionalState_1.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InitialState_VerifyFunctionalState_1.png
new file mode 100644
index 000000000000..64390043a5f3
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InitialState_VerifyFunctionalState_1.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InitialState_VerifyFunctionalState_2.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InitialState_VerifyFunctionalState_2.png
new file mode 100644
index 000000000000..2f62249c5f89
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InitialState_VerifyFunctionalState_2.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InitialState_VerifyVisualState.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InitialState_VerifyVisualState.png
new file mode 100644
index 000000000000..dc23e688bd71
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InitialState_VerifyVisualState.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InsertTabAt_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InsertTabAt_Verify.png
new file mode 100644
index 000000000000..19eac05d1159
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_InsertTabAt_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemSource_And_SelectedItems_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemSource_And_SelectedItems_Verify.png
new file mode 100644
index 000000000000..e42dda818e04
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemSource_And_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemSource_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemSource_Verify.png
new file mode 100644
index 000000000000..d9a07de45dd5
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemTemplate_And_ItemSource_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemTemplate_And_ItemSource_Verify.png
new file mode 100644
index 000000000000..9a84905fc859
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemTemplate_And_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemTemplate_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemTemplate_Verify.png
new file mode 100644
index 000000000000..735b30c2cf59
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_ItemTemplate_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png
new file mode 100644
index 000000000000..c75f3812705c
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png
new file mode 100644
index 000000000000..fd9101357968
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedItems_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedItems_Verify.png
new file mode 100644
index 000000000000..1ab7f882a797
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..38f687f61d3d
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..6b999e4182b4
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/TabbedPage_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_And_BarTextColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_And_BarTextColor_Verify.png
new file mode 100644
index 000000000000..4b85e8ec13fa
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_And_BarTextColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_Gradient_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_Gradient_Verify.png
new file mode 100644
index 000000000000..a9d3c9c545f6
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_Gradient_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_Solid_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_Solid_Verify.png
new file mode 100644
index 000000000000..563c60a53dfc
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_Solid_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..3ed723fca27f
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_With_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..c0cd328b5fff
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarBackground_With_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..1ed754535f53
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarTextColor_And_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..f29d6dfdfc2f
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarTextColor_And_UnselectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarTextColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarTextColor_Verify.png
new file mode 100644
index 000000000000..528ebc34e03e
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_BarTextColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_IconImageSource_Change_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_IconImageSource_Change_Verify.png
new file mode 100644
index 000000000000..98d9e9d706bd
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_IconImageSource_Change_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InitialState_VerifyFunctionalState_1.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InitialState_VerifyFunctionalState_1.png
new file mode 100644
index 000000000000..a932561495ba
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InitialState_VerifyFunctionalState_1.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InitialState_VerifyFunctionalState_2.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InitialState_VerifyFunctionalState_2.png
new file mode 100644
index 000000000000..848e579333eb
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InitialState_VerifyFunctionalState_2.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InitialState_VerifyVisualState.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InitialState_VerifyVisualState.png
new file mode 100644
index 000000000000..8d039c8557a4
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InitialState_VerifyVisualState.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InsertTabAt_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InsertTabAt_Verify.png
new file mode 100644
index 000000000000..24ad374b80b5
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_InsertTabAt_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemSource_And_SelectedItems_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemSource_And_SelectedItems_Verify.png
new file mode 100644
index 000000000000..2233d8729ab8
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemSource_And_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemSource_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemSource_Verify.png
new file mode 100644
index 000000000000..aa23d278819c
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemTemplate_And_ItemSource_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemTemplate_And_ItemSource_Verify.png
new file mode 100644
index 000000000000..de179ecf187d
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemTemplate_And_ItemSource_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemTemplate_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemTemplate_Verify.png
new file mode 100644
index 000000000000..c6a807c6bb2d
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_ItemTemplate_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png
new file mode 100644
index 000000000000..b0483bbbb81d
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedAndUnselectedTabColor_Verify_1.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png
new file mode 100644
index 000000000000..c8c8db849009
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedAndUnselectedTabColor_Verify_2.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedItems_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedItems_Verify.png
new file mode 100644
index 000000000000..5f0d2d654af7
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedItems_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedTabColor_Verify.png
new file mode 100644
index 000000000000..16f6959c9a99
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_SelectedTabColor_Verify.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_UnselectedTabColor_Verify.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_UnselectedTabColor_Verify.png
new file mode 100644
index 000000000000..c8a90f300b82
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/TabbedPage_UnselectedTabColor_Verify.png differ