From 6227d364e598349f274289e0414037180eaca585 Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Sun, 1 Sep 2024 00:06:53 +0200 Subject: [PATCH 1/2] [Android & iOS] dialog theme change on changing UserAppTheme --- src/Controls/src/Core/Application/Application.cs | 1 + .../src/Handlers/Application/ApplicationHandler.Android.cs | 5 +++++ src/Core/src/Handlers/Application/ApplicationHandler.cs | 7 +++++++ .../src/Handlers/Application/ApplicationHandler.iOS.cs | 5 +++++ 4 files changed, 18 insertions(+) diff --git a/src/Controls/src/Core/Application/Application.cs b/src/Controls/src/Core/Application/Application.cs index 73db0faef7e5..68de583c7a45 100644 --- a/src/Controls/src/Core/Application/Application.cs +++ b/src/Controls/src/Core/Application/Application.cs @@ -176,6 +176,7 @@ public AppTheme UserAppTheme _userAppTheme = value; TriggerThemeChangedActual(); + OnPropertyChanged(); } } diff --git a/src/Core/src/Handlers/Application/ApplicationHandler.Android.cs b/src/Core/src/Handlers/Application/ApplicationHandler.Android.cs index 5304c02b1b5e..3adbe79a23d4 100644 --- a/src/Core/src/Handlers/Application/ApplicationHandler.Android.cs +++ b/src/Core/src/Handlers/Application/ApplicationHandler.Android.cs @@ -30,5 +30,10 @@ public static partial void MapCloseWindow(ApplicationHandler handler, IApplicati activity.Finish(); } } + + internal static partial void MapAppTheme(ApplicationHandler handler, IApplication application) + { + application?.UpdateNightMode(); + } } } \ No newline at end of file diff --git a/src/Core/src/Handlers/Application/ApplicationHandler.cs b/src/Core/src/Handlers/Application/ApplicationHandler.cs index 334d38d33748..16498c9d6621 100644 --- a/src/Core/src/Handlers/Application/ApplicationHandler.cs +++ b/src/Core/src/Handlers/Application/ApplicationHandler.cs @@ -24,6 +24,9 @@ public partial class ApplicationHandler public static IPropertyMapper Mapper = new PropertyMapper(ElementMapper) { +#if ANDROID || IOS + [nameof(IApplication.UserAppTheme)] = MapAppTheme, +#endif }; public static CommandMapper CommandMapper = new(ElementCommandMapper) @@ -83,5 +86,9 @@ protected override PlatformView CreatePlatformElement() => /// The associated instance. /// The associated command arguments. public static partial void MapCloseWindow(ApplicationHandler handler, IApplication application, object? args); + +#if ANDROID || IOS + internal static partial void MapAppTheme(ApplicationHandler handler, IApplication application); +#endif } } \ No newline at end of file diff --git a/src/Core/src/Handlers/Application/ApplicationHandler.iOS.cs b/src/Core/src/Handlers/Application/ApplicationHandler.iOS.cs index 9498df89b5ee..e0b9cb075ec5 100644 --- a/src/Core/src/Handlers/Application/ApplicationHandler.iOS.cs +++ b/src/Core/src/Handlers/Application/ApplicationHandler.iOS.cs @@ -44,6 +44,11 @@ public static partial void MapCloseWindow(ApplicationHandler handler, IApplicati } } + internal static partial void MapAppTheme(ApplicationHandler handler, IApplication application) + { + application?.UpdateUserInterfaceStyle(); + } + #if __MACCATALYST__ class NSApplication { From c336051ab4f211638b0a291c5958e2af6b2b43ac Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Mon, 2 Sep 2024 10:50:57 +0200 Subject: [PATCH 2/2] Update Application.cs --- src/Controls/src/Core/Application/Application.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controls/src/Core/Application/Application.cs b/src/Controls/src/Core/Application/Application.cs index 68de583c7a45..4d0c7d73c0b3 100644 --- a/src/Controls/src/Core/Application/Application.cs +++ b/src/Controls/src/Core/Application/Application.cs @@ -176,7 +176,6 @@ public AppTheme UserAppTheme _userAppTheme = value; TriggerThemeChangedActual(); - OnPropertyChanged(); } } @@ -257,6 +256,7 @@ void TriggerThemeChangedActual() OnParentResourcesChanged([new KeyValuePair(AppThemeBinding.AppThemeResource, newTheme)]); _weakEventManager.HandleEvent(this, new AppThemeChangedEventArgs(newTheme), nameof(RequestedThemeChanged)); + OnPropertyChanged(nameof(UserAppTheme)); } finally {