diff --git a/LICENSE b/LICENSE
index 4c1ea46..c012463 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2021 Vijay Anand E G
+Copyright (c) 2021-2024 Vijay Anand E G
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index a1182d7..9a7eca1 100644
--- a/README.md
+++ b/README.md
@@ -16,8 +16,9 @@ Made available in the `src\NET_9\` directory:
|`EmbeddediOS`|.NET MAUI Page embedded in a .NET 9 for iOS App
Refer to this [.NET MAUI - Native Embedding](https://egvijayanand.in/2024/02/29/dotnet-maui-native-embedding/) article for working with this sample|
|`EmbeddedWindows`|.NET MAUI Page embedded in a Native WinUI 3 App
Refer to this [.NET MAUI - Native Embedding](https://egvijayanand.in/2024/02/29/dotnet-maui-native-embedding/) article for working with this sample|
|`MapsApp`|Using .NET MAUI [CommunityToolkit.Maui.Maps](https://www.nuget.org/packages/CommunityToolkit.Maui.Maps) embedded in a Native WinUI 3 App
Refer to this [.NET MAUI Community Toolkit Maps in WinUI 3 App](https://egvijayanand.in/2024/03/07/dotnet-maui-community-toolkit-maps-in-winui-3-app/) article for working with this sample|
-|`HybridWebViewApp`|A sample .NET MAUI App showcasing the features of the new [HybridWebView](https://learn.microsoft.com/en-us/dotnet/maui/whats-new/dotnet-9?view=net-maui-9.0#hybridwebview) control.
Refer to this [Exploring .NET MAUI 9: HybridWebView Features](https://egvijayanand.in/2024/10/04/exploring-dotnet-maui-9-hybridwebview-features/) article for working with this sample|
+|`HybridWebViewApp`|A sample app showcasing the features of the new [HybridWebView](https://learn.microsoft.com/en-us/dotnet/maui/whats-new/dotnet-9?view=net-maui-9.0#hybridwebview) control.
Refer to this [Exploring .NET MAUI 9: HybridWebView](https://egvijayanand.in/2024/10/04/exploring-dotnet-maui-9-hybridwebview-features/) article for working with this sample|
|`WinUIBlazor`|.NET MAUI `BlazorWebView` embedded in a Native WinUI 3 App, making it as a Blazor Hybrid app
Refer to this [.NET MAUI - Blazor Hybrid - WinUI 3](https://egvijayanand.in/2023/03/29/dotnet-maui-blazor-hybrid-winui-3/) article for working with this sample|
+|`TitleBarApp`|A sample app showcasing the features of the new [TitleBar](https://learn.microsoft.com/en-us/dotnet/maui/whats-new/dotnet-9?view=net-maui-9.0#titlebar-for-windows) control.
Refer to this [What's New in .NET MAUI 9: Window TitleBar](https://egvijayanand.in/2024/12/04/what-is-new-in-dotnet-maui-9-window-titlebar/) article for working with this sample|
### .NET MAUI 8 Samples
diff --git a/src/NET_9/TitleBarApp/App.xaml b/src/NET_9/TitleBarApp/App.xaml
new file mode 100644
index 0000000..1538195
--- /dev/null
+++ b/src/NET_9/TitleBarApp/App.xaml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+ 10
+ OS600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/App.xaml.cs b/src/NET_9/TitleBarApp/App.xaml.cs
new file mode 100644
index 0000000..287e354
--- /dev/null
+++ b/src/NET_9/TitleBarApp/App.xaml.cs
@@ -0,0 +1,14 @@
+namespace TitleBarApp;
+
+public partial class App : Application
+{
+ public App()
+ {
+ InitializeComponent();
+
+ UserAppTheme = PlatformAppTheme;
+ }
+
+ protected override Window CreateWindow(IActivationState? activationState)
+ => new MainWindow();
+}
diff --git a/src/NET_9/TitleBarApp/AppShell.xaml b/src/NET_9/TitleBarApp/AppShell.xaml
new file mode 100644
index 0000000..8a2b525
--- /dev/null
+++ b/src/NET_9/TitleBarApp/AppShell.xaml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/AppShell.xaml.cs b/src/NET_9/TitleBarApp/AppShell.xaml.cs
new file mode 100644
index 0000000..27dcbbf
--- /dev/null
+++ b/src/NET_9/TitleBarApp/AppShell.xaml.cs
@@ -0,0 +1,10 @@
+namespace TitleBarApp
+{
+ public partial class AppShell : Shell
+ {
+ public AppShell()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Directory.Packages.props b/src/NET_9/TitleBarApp/Directory.Packages.props
new file mode 100644
index 0000000..50cc564
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Directory.Packages.props
@@ -0,0 +1,6 @@
+
+
+ false
+ 9.*
+
+
diff --git a/src/NET_9/TitleBarApp/Imports.cs b/src/NET_9/TitleBarApp/Imports.cs
new file mode 100644
index 0000000..73ea79b
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Imports.cs
@@ -0,0 +1,17 @@
+// .NET MAUI Markup
+global using CommunityToolkit.Maui.Markup;
+
+// MVVM Toolkit
+global using CommunityToolkit.Mvvm.ComponentModel;
+global using CommunityToolkit.Mvvm.Input;
+
+global using TitleBarApp;
+global using TitleBarApp.Views;
+
+// Shared Toolkit
+global using VijayAnand.Toolkit.Markup;
+
+// Static
+global using static CommunityToolkit.Maui.Markup.GridRowsColumns;
+global using static Microsoft.Maui.Graphics.Colors;
+global using static VijayAnand.Toolkit.Markup.ResourceHelper;
diff --git a/src/NET_9/TitleBarApp/MainWindow.xaml b/src/NET_9/TitleBarApp/MainWindow.xaml
new file mode 100644
index 0000000..ca262f6
--- /dev/null
+++ b/src/NET_9/TitleBarApp/MainWindow.xaml
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/MainWindow.xaml.cs b/src/NET_9/TitleBarApp/MainWindow.xaml.cs
new file mode 100644
index 0000000..99a437c
--- /dev/null
+++ b/src/NET_9/TitleBarApp/MainWindow.xaml.cs
@@ -0,0 +1,15 @@
+namespace TitleBarApp
+{
+ public partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+
+ public MainWindow(Page page) : base(page)
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/MauiProgram.cs b/src/NET_9/TitleBarApp/MauiProgram.cs
new file mode 100644
index 0000000..0f26e92
--- /dev/null
+++ b/src/NET_9/TitleBarApp/MauiProgram.cs
@@ -0,0 +1,26 @@
+using Microsoft.Extensions.Logging;
+
+namespace TitleBarApp
+{
+ public static partial class MauiProgram
+ {
+ public static MauiApp CreateMauiApp()
+ {
+ var builder = MauiApp.CreateBuilder();
+ builder.UseMauiApp()
+ .UseMauiCommunityToolkitMarkup()
+ .ConfigureFonts(fonts =>
+ {
+ fonts.AddFont("OpenSans-Regular.ttf", "OS400");
+ fonts.AddFont("OpenSans-SemiBold.ttf", "OS600");
+ fonts.AddFont("fa-solid-900.ttf", "FAS");
+ });
+
+#if DEBUG
+ builder.Logging.AddDebug();
+#endif
+
+ return builder.Build();
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/MyWindow.xaml b/src/NET_9/TitleBarApp/MyWindow.xaml
new file mode 100644
index 0000000..c617340
--- /dev/null
+++ b/src/NET_9/TitleBarApp/MyWindow.xaml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/MyWindow.xaml.cs b/src/NET_9/TitleBarApp/MyWindow.xaml.cs
new file mode 100644
index 0000000..2ce425e
--- /dev/null
+++ b/src/NET_9/TitleBarApp/MyWindow.xaml.cs
@@ -0,0 +1,15 @@
+namespace TitleBarApp
+{
+ public partial class MyWindow : Window
+ {
+ public MyWindow()
+ {
+ InitializeComponent();
+ }
+
+ public MyWindow(Page page) : base(page)
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Platforms/Android/AndroidManifest.xml b/src/NET_9/TitleBarApp/Platforms/Android/AndroidManifest.xml
new file mode 100644
index 0000000..f72486a
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Android/AndroidManifest.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Platforms/Android/MainActivity.cs b/src/NET_9/TitleBarApp/Platforms/Android/MainActivity.cs
new file mode 100644
index 0000000..a92d245
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Android/MainActivity.cs
@@ -0,0 +1,12 @@
+using Android.App;
+using Android.Content.PM;
+using Android.OS;
+
+namespace TitleBarApp
+{
+ [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)]
+ public class MainActivity : MauiAppCompatActivity
+ {
+
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Platforms/Android/MainApplication.cs b/src/NET_9/TitleBarApp/Platforms/Android/MainApplication.cs
new file mode 100644
index 0000000..28d414f
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Android/MainApplication.cs
@@ -0,0 +1,16 @@
+using Android.App;
+using Android.Runtime;
+
+namespace TitleBarApp
+{
+ [Application]
+ public class MainApplication : MauiApplication
+ {
+ public MainApplication(IntPtr handle, JniHandleOwnership ownership)
+ : base(handle, ownership)
+ {
+ }
+
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Platforms/Android/Resources/values/colors.xml b/src/NET_9/TitleBarApp/Platforms/Android/Resources/values/colors.xml
new file mode 100644
index 0000000..12a661d
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Android/Resources/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #512BD4
+ #2B0B98
+ #2B0B98
+
\ No newline at end of file
diff --git a/src/NET_9/TitleBarApp/Platforms/MacCatalyst/AppDelegate.cs b/src/NET_9/TitleBarApp/Platforms/MacCatalyst/AppDelegate.cs
new file mode 100644
index 0000000..537c005
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/MacCatalyst/AppDelegate.cs
@@ -0,0 +1,10 @@
+using Foundation;
+
+namespace TitleBarApp
+{
+ [Register(nameof(AppDelegate))]
+ public class AppDelegate : MauiUIApplicationDelegate
+ {
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Platforms/MacCatalyst/Info.plist b/src/NET_9/TitleBarApp/Platforms/MacCatalyst/Info.plist
new file mode 100644
index 0000000..403ce9c
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/MacCatalyst/Info.plist
@@ -0,0 +1,30 @@
+
+
+
+
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ XSAppIconAssets
+ Assets.xcassets/appicon.appiconset
+
+
diff --git a/src/NET_9/TitleBarApp/Platforms/MacCatalyst/PrivacyInfo.xcprivacy b/src/NET_9/TitleBarApp/Platforms/MacCatalyst/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000..dcfcbac
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/MacCatalyst/PrivacyInfo.xcprivacy
@@ -0,0 +1,43 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryFileTimestamp
+ NSPrivacyAccessedAPITypeReasons
+
+ C617.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategorySystemBootTime
+ NSPrivacyAccessedAPITypeReasons
+
+ 35F9.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryDiskSpace
+ NSPrivacyAccessedAPITypeReasons
+
+ E174.1
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Platforms/MacCatalyst/Program.cs b/src/NET_9/TitleBarApp/Platforms/MacCatalyst/Program.cs
new file mode 100644
index 0000000..fdcdc5b
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/MacCatalyst/Program.cs
@@ -0,0 +1,16 @@
+using ObjCRuntime;
+using UIKit;
+
+namespace TitleBarApp
+{
+ public class Program
+ {
+ // This is the main entry point of the application.
+ static void Main(string[] args)
+ {
+ // if you want to use a different Application Delegate class from "AppDelegate"
+ // you can specify it here.
+ UIApplication.Main(args, null, typeof(AppDelegate));
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Platforms/Tizen/Main.cs b/src/NET_9/TitleBarApp/Platforms/Tizen/Main.cs
new file mode 100644
index 0000000..9e5971f
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Tizen/Main.cs
@@ -0,0 +1,17 @@
+using System;
+using Microsoft.Maui;
+using Microsoft.Maui.Hosting;
+
+namespace TitleBarApp
+{
+ class Program : MauiApplication
+ {
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+
+ static void Main(string[] args)
+ {
+ var app = new Program();
+ app.Run(args);
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Platforms/Tizen/tizen-manifest.xml b/src/NET_9/TitleBarApp/Platforms/Tizen/tizen-manifest.xml
new file mode 100644
index 0000000..503b0be
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Tizen/tizen-manifest.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+ appicon.xhigh.png
+
+
+
+
+ http://tizen.org/privilege/internet
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Platforms/Windows/App.xaml b/src/NET_9/TitleBarApp/Platforms/Windows/App.xaml
new file mode 100644
index 0000000..3a46b40
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Windows/App.xaml
@@ -0,0 +1,8 @@
+
+
+
diff --git a/src/NET_9/TitleBarApp/Platforms/Windows/App.xaml.cs b/src/NET_9/TitleBarApp/Platforms/Windows/App.xaml.cs
new file mode 100644
index 0000000..1ff22ea
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Windows/App.xaml.cs
@@ -0,0 +1,24 @@
+using Microsoft.UI.Xaml;
+
+// To learn more about WinUI, the WinUI project structure,
+// and more about our project templates, see: http://aka.ms/winui-project-info.
+
+namespace TitleBarApp.WinUI
+{
+ ///
+ /// Provides application-specific behavior to supplement the default Application class.
+ ///
+ public partial class App : MauiWinUIApplication
+ {
+ ///
+ /// Initializes the singleton application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
+ ///
+ public App()
+ {
+ this.InitializeComponent();
+ }
+
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Platforms/Windows/Package.appxmanifest b/src/NET_9/TitleBarApp/Platforms/Windows/Package.appxmanifest
new file mode 100644
index 0000000..9efd225
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Windows/Package.appxmanifest
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+ $placeholder$
+ User Name
+ $placeholder$.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Platforms/Windows/app.manifest b/src/NET_9/TitleBarApp/Platforms/Windows/app.manifest
new file mode 100644
index 0000000..11b5956
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/Windows/app.manifest
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+ true/PM
+ PerMonitorV2, PerMonitor
+
+
+
diff --git a/src/NET_9/TitleBarApp/Platforms/iOS/AppDelegate.cs b/src/NET_9/TitleBarApp/Platforms/iOS/AppDelegate.cs
new file mode 100644
index 0000000..537c005
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/iOS/AppDelegate.cs
@@ -0,0 +1,10 @@
+using Foundation;
+
+namespace TitleBarApp
+{
+ [Register(nameof(AppDelegate))]
+ public class AppDelegate : MauiUIApplicationDelegate
+ {
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Platforms/iOS/Info.plist b/src/NET_9/TitleBarApp/Platforms/iOS/Info.plist
new file mode 100644
index 0000000..ecb7f71
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/iOS/Info.plist
@@ -0,0 +1,32 @@
+
+
+
+
+ LSRequiresIPhoneOS
+
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ XSAppIconAssets
+ Assets.xcassets/appicon.appiconset
+
+
diff --git a/src/NET_9/TitleBarApp/Platforms/iOS/PrivacyInfo.xcprivacy b/src/NET_9/TitleBarApp/Platforms/iOS/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000..dcfcbac
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/iOS/PrivacyInfo.xcprivacy
@@ -0,0 +1,43 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryFileTimestamp
+ NSPrivacyAccessedAPITypeReasons
+
+ C617.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategorySystemBootTime
+ NSPrivacyAccessedAPITypeReasons
+
+ 35F9.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryDiskSpace
+ NSPrivacyAccessedAPITypeReasons
+
+ E174.1
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Platforms/iOS/Program.cs b/src/NET_9/TitleBarApp/Platforms/iOS/Program.cs
new file mode 100644
index 0000000..fdcdc5b
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Platforms/iOS/Program.cs
@@ -0,0 +1,16 @@
+using ObjCRuntime;
+using UIKit;
+
+namespace TitleBarApp
+{
+ public class Program
+ {
+ // This is the main entry point of the application.
+ static void Main(string[] args)
+ {
+ // if you want to use a different Application Delegate class from "AppDelegate"
+ // you can specify it here.
+ UIApplication.Main(args, null, typeof(AppDelegate));
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Properties/launchSettings.json b/src/NET_9/TitleBarApp/Properties/launchSettings.json
new file mode 100644
index 0000000..54e8460
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Properties/launchSettings.json
@@ -0,0 +1,9 @@
+{
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "Windows Machine": {
+ "commandName": "Project",
+ "nativeDebugging": false
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Resources/Colors.xaml b/src/NET_9/TitleBarApp/Resources/Colors.xaml
new file mode 100644
index 0000000..c996d51
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Resources/Colors.xaml
@@ -0,0 +1,67 @@
+
+
+
+
+ #512BD4
+ #DFD8F7
+ #2B0B98
+ White
+ Black
+ #E1E1E1
+ #C8C8C8
+ #ACACAC
+ #919191
+ #6E6E6E
+ #404040
+ #212121
+ #141414
+
+ #DFD8F7
+ #2B0B98
+ #E5E5E1
+ #969696
+ #505050
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #121212
+ White
+ White
+ Black
+
+ #F7B548
+ #FFD590
+ #FFE5B9
+ #28C2D1
+ #7BDDEF
+ #C3F2F4
+ #3E8EED
+ #72ACF1
+ #A7CBF6
+
+
diff --git a/src/NET_9/TitleBarApp/Resources/Fonts/OpenSans-Regular.ttf b/src/NET_9/TitleBarApp/Resources/Fonts/OpenSans-Regular.ttf
new file mode 100644
index 0000000..c9237de
Binary files /dev/null and b/src/NET_9/TitleBarApp/Resources/Fonts/OpenSans-Regular.ttf differ
diff --git a/src/NET_9/TitleBarApp/Resources/Fonts/OpenSans-SemiBold.ttf b/src/NET_9/TitleBarApp/Resources/Fonts/OpenSans-SemiBold.ttf
new file mode 100644
index 0000000..0da9f99
Binary files /dev/null and b/src/NET_9/TitleBarApp/Resources/Fonts/OpenSans-SemiBold.ttf differ
diff --git a/src/NET_9/TitleBarApp/Resources/Fonts/fa-solid-900.ttf b/src/NET_9/TitleBarApp/Resources/Fonts/fa-solid-900.ttf
new file mode 100644
index 0000000..e7e2ecf
Binary files /dev/null and b/src/NET_9/TitleBarApp/Resources/Fonts/fa-solid-900.ttf differ
diff --git a/src/NET_9/TitleBarApp/Resources/Images/dotnet_bot.svg b/src/NET_9/TitleBarApp/Resources/Images/dotnet_bot.svg
new file mode 100644
index 0000000..abfaff2
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Resources/Images/dotnet_bot.svg
@@ -0,0 +1,93 @@
+
diff --git a/src/NET_9/TitleBarApp/Resources/Raw/AboutAssets.txt b/src/NET_9/TitleBarApp/Resources/Raw/AboutAssets.txt
new file mode 100644
index 0000000..3f7a940
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Resources/Raw/AboutAssets.txt
@@ -0,0 +1,14 @@
+Any raw assets you want to be deployed with your application can be placed in
+this directory (and child directories) and given a Build Action of "MauiAsset":
+
+
+
+These files will be deployed with you package and will be accessible using Essentials:
+
+ async Task LoadMauiAsset()
+ {
+ using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt");
+ using var reader = new StreamReader(stream);
+
+ var contents = reader.ReadToEnd();
+ }
diff --git a/src/NET_9/TitleBarApp/Resources/Styles.xaml b/src/NET_9/TitleBarApp/Resources/Styles.xaml
new file mode 100644
index 0000000..9638443
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Resources/Styles.xaml
@@ -0,0 +1,387 @@
+
+
+
+
+
+ OS400
+
+ 14
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Resources/appicon.svg b/src/NET_9/TitleBarApp/Resources/appicon.svg
new file mode 100644
index 0000000..9d63b65
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Resources/appicon.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/src/NET_9/TitleBarApp/Resources/appiconfg.svg b/src/NET_9/TitleBarApp/Resources/appiconfg.svg
new file mode 100644
index 0000000..21dfb25
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Resources/appiconfg.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/src/NET_9/TitleBarApp/TitleBarApp.code-workspace b/src/NET_9/TitleBarApp/TitleBarApp.code-workspace
new file mode 100644
index 0000000..9b3ddc9
--- /dev/null
+++ b/src/NET_9/TitleBarApp/TitleBarApp.code-workspace
@@ -0,0 +1,15 @@
+{
+ "folders": [
+ {
+ "path": "."
+ }
+ ],
+ "settings": {},
+ "extensions": {
+ "recommendations": [
+ "ms-dotnettools.csharp",
+ "ms-dotnettools.dotnet-maui",
+ "VisualStudioExptTeam.vscodeintellicode"
+ ]
+ }
+}
diff --git a/src/NET_9/TitleBarApp/TitleBarApp.csproj b/src/NET_9/TitleBarApp/TitleBarApp.csproj
new file mode 100644
index 0000000..f5ea9bd
--- /dev/null
+++ b/src/NET_9/TitleBarApp/TitleBarApp.csproj
@@ -0,0 +1,78 @@
+
+
+
+ net9.0-android
+ $(TargetFrameworks);net9.0-ios;net9.0-maccatalyst
+ $(TargetFrameworks);net9.0-ios;net9.0-maccatalyst;net9.0-windows10.0.19041.0
+
+ $(TargetFrameworks);net9.0
+ Exe
+
+
+ true
+ true
+
+
+ enable
+ latest
+ enable
+ TitleBarApp
+ None
+
+
+ TitleBarApp
+
+
+ com.companyname.titlebarapp
+
+
+ 1.0
+ 1
+
+
+ 15.0
+ 15.0
+ 21.0
+ 6.5
+ 10.0.17763.0
+
+
+ 10.0.17763.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/TitleBarApp.sln b/src/NET_9/TitleBarApp/TitleBarApp.sln
new file mode 100644
index 0000000..70022e9
--- /dev/null
+++ b/src/NET_9/TitleBarApp/TitleBarApp.sln
@@ -0,0 +1,27 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TitleBarApp", "TitleBarApp.csproj", "{89AFF070-6421-4274-9D70-542066138183}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8EC462FD-D22E-90A8-E5CE-7E832BA40C5D}"
+ ProjectSection(SolutionItems) = preProject
+ Directory.Packages.props = Directory.Packages.props
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {89AFF070-6421-4274-9D70-542066138183}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {89AFF070-6421-4274-9D70-542066138183}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {89AFF070-6421-4274-9D70-542066138183}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {89AFF070-6421-4274-9D70-542066138183}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/NET_9/TitleBarApp/TitleBarApp.slnx b/src/NET_9/TitleBarApp/TitleBarApp.slnx
new file mode 100644
index 0000000..2834f44
--- /dev/null
+++ b/src/NET_9/TitleBarApp/TitleBarApp.slnx
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Views/CSharpPage.xaml b/src/NET_9/TitleBarApp/Views/CSharpPage.xaml
new file mode 100644
index 0000000..13b895c
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Views/CSharpPage.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Views/CSharpPage.xaml.cs b/src/NET_9/TitleBarApp/Views/CSharpPage.xaml.cs
new file mode 100644
index 0000000..c22dfe2
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Views/CSharpPage.xaml.cs
@@ -0,0 +1,57 @@
+namespace TitleBarApp.Views
+{
+ public partial class CSharpPage : ContentPage
+ {
+ public CSharpPage()
+ {
+ InitializeComponent();
+ }
+
+ protected override void OnAppearing()
+ {
+ base.OnAppearing();
+ Window.TitleBar = new TitleBar()
+ {
+ ForegroundColor = AppColor("White"),
+ LeadingContent = new Grid()
+ {
+ ColumnDefinitions = Columns.Define(Auto, Auto, Auto),
+ ColumnSpacing = 15d,
+ Children =
+ {
+ new Image()
+ {
+ Source = "dotnet_bot.png",
+ }.Size(16),
+ new Label().Column(1)
+ .Text("MyApp")
+ .Style(AppStyle("AppTitle")!),
+ new Label().Column(2)
+ .Text("C#")
+ .Style(AppStyle("Title")!),
+ },
+ }.CenterVertical()
+ .Margins(20),
+ Content = new SearchBar()
+ {
+ MaximumWidthRequest = 300,
+ Placeholder = "Search",
+ }.FillHorizontal()
+ .CenterVertical()
+ .BackgroundColor(AppColor("White")),
+ TrailingContent = new ImageButton()
+ {
+ Background = new SolidColorBrush(Transparent),
+ BorderWidth = 0d,
+ Source = new FontImageSource()
+ {
+ FontFamily = "FAS",
+ Glyph = "\xF013",
+ Size = 18,
+ },
+ }.Size(36),
+ }.Height(48)
+ .BackgroundColor(AppColor("Primary"));
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Views/MainPage.xaml b/src/NET_9/TitleBarApp/Views/MainPage.xaml
new file mode 100644
index 0000000..9445d72
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Views/MainPage.xaml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Views/MainPage.xaml.cs b/src/NET_9/TitleBarApp/Views/MainPage.xaml.cs
new file mode 100644
index 0000000..9821301
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Views/MainPage.xaml.cs
@@ -0,0 +1,39 @@
+using System.Reflection;
+
+namespace TitleBarApp.Views
+{
+ public partial class MainPage : ContentPage
+ {
+ private int _count = 0;
+
+ public MainPage()
+ {
+ InitializeComponent();
+
+ var version = typeof(MauiApp).Assembly.GetCustomAttribute()?.InformationalVersion;
+ versionLabel.Text = $".NET MAUI ver. {version?[..version.IndexOf('+')]}";
+ }
+
+ protected override void OnAppearing()
+ {
+ base.OnAppearing();
+ // No TitleBar
+ Window.TitleBar = null;
+ }
+
+ protected override void OnNavigatedTo(NavigatedToEventArgs args)
+ {
+ base.OnNavigatedTo(args);
+ // No TitleBar
+ Window.TitleBar = null;
+ }
+
+ private void OnCounterClicked(object sender, EventArgs e)
+ {
+ _count++;
+ counterLabel.Text = $"Current count: {_count}";
+
+ SemanticScreenReader.Announce(counterLabel.Text);
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Views/MyTitleBar.xaml b/src/NET_9/TitleBarApp/Views/MyTitleBar.xaml
new file mode 100644
index 0000000..8cb7222
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Views/MyTitleBar.xaml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Views/MyTitleBar.xaml.cs b/src/NET_9/TitleBarApp/Views/MyTitleBar.xaml.cs
new file mode 100644
index 0000000..e67ab89
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Views/MyTitleBar.xaml.cs
@@ -0,0 +1,10 @@
+namespace TitleBarApp.Views
+{
+ public partial class MyTitleBar : TitleBar
+ {
+ public MyTitleBar()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/src/NET_9/TitleBarApp/Views/XamlPage.xaml b/src/NET_9/TitleBarApp/Views/XamlPage.xaml
new file mode 100644
index 0000000..97a2b18
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Views/XamlPage.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/src/NET_9/TitleBarApp/Views/XamlPage.xaml.cs b/src/NET_9/TitleBarApp/Views/XamlPage.xaml.cs
new file mode 100644
index 0000000..b1a3dc2
--- /dev/null
+++ b/src/NET_9/TitleBarApp/Views/XamlPage.xaml.cs
@@ -0,0 +1,16 @@
+namespace TitleBarApp.Views
+{
+ public partial class XamlPage : ContentPage
+ {
+ public XamlPage()
+ {
+ InitializeComponent();
+ }
+
+ protected override void OnAppearing()
+ {
+ base.OnAppearing();
+ Window.TitleBar = new MyTitleBar();
+ }
+ }
+}