From f506bbc531d3598c6980a36d44d593a59d7161a1 Mon Sep 17 00:00:00 2001 From: GID Date: Fri, 29 Aug 2025 00:27:54 +0700 Subject: [PATCH 01/11] Upload Geometry Image Example --- .../Assets/Design/Geometry.dark.png | Bin 0 -> 52268 bytes .../Assets/Design/Geometry.light.png | Bin 0 -> 55222 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/iNKORE.UI.WPF.Modern.Gallery/Assets/Design/Geometry.dark.png create mode 100644 source/iNKORE.UI.WPF.Modern.Gallery/Assets/Design/Geometry.light.png diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Assets/Design/Geometry.dark.png b/source/iNKORE.UI.WPF.Modern.Gallery/Assets/Design/Geometry.dark.png new file mode 100644 index 0000000000000000000000000000000000000000..653710883ed122969f0be2210f90cc8c80672886 GIT binary patch literal 52268 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 O0000pVbHe literal 0 HcmV?d00001 diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Assets/Design/Geometry.light.png b/source/iNKORE.UI.WPF.Modern.Gallery/Assets/Design/Geometry.light.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7d95f3928bcc2b9db55da7fb56233504eeb3c5 GIT binary patch literal 55222 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 Ze+5Ssq76L3nN9!z002ovPDHLkV1flEcS8UG literal 0 HcmV?d00001 From bbd48b59c4c5fb755e3385934a52d664f531bb5b Mon Sep 17 00:00:00 2001 From: GID Date: Fri, 29 Aug 2025 00:32:26 +0700 Subject: [PATCH 02/11] Add GeometryPage XAML for corner radius examples contains the ported WinUI3 Gallery XAML definition for the GeometryPage, which includes layout elements, controls, and visual states for handling corner radius examples in the UI. --- .../Foundation/Design/GeometryPage.xaml | 361 ++++++++++++++++++ 1 file changed, 361 insertions(+) create mode 100644 source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml new file mode 100644 index 00000000..96b0efab --- /dev/null +++ b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml @@ -0,0 +1,361 @@ + + + + + + + + + + Geometry describes the shape, size and position of UI elements on screen. These fundamental design elements help experiences feel coherent across the entire design system. WinUI uses three levels of rounding depending on what UI component is being rounded and how that component is arranged relative to neighboring elements. + You can reference built-in corner radii styles using: + CornerRadius="{DynamicResource ControlCornerRadius}". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a850827bf07dd939af9fd4becc6a46a05ec2dccc Mon Sep 17 00:00:00 2001 From: GID Date: Fri, 29 Aug 2025 00:33:18 +0700 Subject: [PATCH 03/11] Add GeometryPage cs side to handle the logic on xaml side --- .../Foundation/Design/GeometryPage.xaml.cs | 164 ++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml.cs diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml.cs b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml.cs new file mode 100644 index 00000000..5ffb6601 --- /dev/null +++ b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml.cs @@ -0,0 +1,164 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using iNKORE.UI.WPF.Modern.Controls; +using System; +using System.Windows; +using iNKORE.UI.WPF.Modern.Gallery; +using System.Windows.Controls; +using Page = iNKORE.UI.WPF.Modern.Controls.Page; +using MessageBox = iNKORE.UI.WPF.Modern.Controls.MessageBox; +using System.Threading.Tasks; + +namespace iNKORE.UI.WPF.Modern.Gallery.Pages.Controls.Foundation +{ + ///

+ /// Geometry page showcasing Windows geometry values and layout examples. + /// + public partial class GeometryPage : Page + { + public GeometryPage() + { + this.InitializeComponent(); + + UpdateExampleCode(); + } + + // kept for backward compatibility if we want to programmatically set usage + public string Usage { get; set; } + + /// + /// Unified handler for resource-copy buttons that use the Tag property to store copy text. + /// (OverlayCornerRadiusCopyButton and ControlCornerRadiusCopyButton call this.) + /// + private async void CopyControlCornerRadiusButton_Click(object sender, RoutedEventArgs e) + { + try + { + // Use GoToElementState for FrameworkElement-based VSM. + bool started = VisualStateManager.GoToElementState(LayoutRoot, "ControlCornerRadiusCopyButtonVisible", true); + if (!started) + { + // MessageBox.Show("Could not find visual state 'ControlCornerRadiusCopyButtonVisible' on LayoutRoot.", "VSM", MessageBoxButton.OK, MessageBoxImage.Warning); + } + if (sender is Button btn && btn.Tag is string tagText) + { + Clipboard.SetText(tagText); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString(), "Unable to Perform Copy", MessageBoxButton.OK, MessageBoxImage.Error); + } + + await Task.Delay(1000); + + try + { + VisualStateManager.GoToElementState(LayoutRoot, "ControlCornerRadiusCopyButtonHidden", true); + } + catch + { + // swallow + } + } + + /// + /// Helper method: if you want resource-copy buttons to also show the same animation, + /// call this. Left public for optional reuse. + /// + public async Task ShowCopyConfirmationAnimationAsync() + { + try + { + VisualStateManager.GoToElementState(LayoutRoot, "ConfirmationDialogVisible", true); + } + catch { } + + await Task.Delay(1000); + + try + { + VisualStateManager.GoToElementState(LayoutRoot, "ConfirmationDialogHidden", true); + } + catch { } + } + + private async void OverlayCornerRadiusCopyButton_Click(object sender, RoutedEventArgs e) + { + try + { + bool started = VisualStateManager.GoToElementState(LayoutRoot, "OverlayCornerRadiusCopyButtonVisible", true); + if (!started) + { + // MessageBox.Show("Could not find visual state 'OverlayCornerRadiusCopyButtonVisible' on LayoutRoot.", "VSM", MessageBoxButton.OK, MessageBoxImage.Warning); + } + if (sender is Button btn && btn.Tag is string tagText) + { + Clipboard.SetText(tagText); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString(), "Unable to Perform Copy", MessageBoxButton.OK, MessageBoxImage.Error); + } + + await Task.Delay(1000); + + try + { + VisualStateManager.GoToElementState(LayoutRoot, "OverlayCornerRadiusCopyButtonHidden", true); + } + catch + { + // swallow + } + } + + private void ShowGeometryButtonClick1(object sender, RoutedEventArgs e) + { + if (sender is Button button) + { + var flyout = FlyoutService.GetFlyout(button); + if (flyout != null) + { + flyout.ShowAt(button); + } + } + } + + private void ShowGeometryButtonClick2(object sender, RoutedEventArgs e) + { + if (sender is Button button) + { + var flyout = FlyoutService.GetFlyout(button); + if (flyout != null) + { + flyout.ShowAt(button); + } + } + } + + private void ShowGeometryButtonClick3(object sender, RoutedEventArgs e) + { + if (sender is Button button) + { + var flyout = FlyoutService.GetFlyout(button); + if (flyout != null) + { + flyout.ShowAt(button); + } + } + } + + private void UpdateExampleCode() + { + Example1.Xaml = Example1Xaml; + } + + string Example1Xaml => @" + +"; + + } +} From 412965b0535ad920e9d48a6661ad9cc7bdfebabc Mon Sep 17 00:00:00 2001 From: GID Date: Fri, 29 Aug 2025 00:35:58 +0700 Subject: [PATCH 04/11] Add Geometry section to Controls.Foundation.json --- .../DataModel/Data/Controls.Foundation.json | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/DataModel/Data/Controls.Foundation.json b/source/iNKORE.UI.WPF.Modern.Gallery/DataModel/Data/Controls.Foundation.json index 45a7ec64..bd1177b3 100644 --- a/source/iNKORE.UI.WPF.Modern.Gallery/DataModel/Data/Controls.Foundation.json +++ b/source/iNKORE.UI.WPF.Modern.Gallery/DataModel/Data/Controls.Foundation.json @@ -24,6 +24,29 @@ "Description": "Design guidance and resources", "Items": [ + { + "UniqueId": "Geometry", + "Title": "Geometry", + "Subtitle": "Corner radius and geometry values", + "ImagePath": "ms-appx:///Assets/ControlIcons/DefaultIcon.png", + "ImageIconPath": "ms-appx:///Assets/ControlIcons/DefaultIcon.png", + "Description": "", + "Content": "", + "IncludedInBuild": true, + "IsNew": false, + "IsUpdated": false, + "Docs": [ + { + "Title": "Geometry in Windows 11", + "Uri": "https://learn.microsoft.com/windows/apps/design/signature-experiences/geometry" + }, + { + "Title": "WinUI Theme Resources (GitHub)", + "Uri": "https://github.com/microsoft/microsoft-ui-xaml/blob/main/src/controls/dev/CommonStyles/Common_themeresources_any.xaml" + } + ], + "RelatedControls": [] + }, { "UniqueId": "Typography", "Title": "Typography", @@ -68,4 +91,4 @@ ] } ] -} \ No newline at end of file +} From 266b160f160a44500d7916bf0b91fa81c5f8caa3 Mon Sep 17 00:00:00 2001 From: GID Date: Fri, 29 Aug 2025 00:37:04 +0700 Subject: [PATCH 05/11] Add Geometry navigation handling in NavigationRootPage --- .../Navigation/NavigationRootPage.xaml.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Navigation/NavigationRootPage.xaml.cs b/source/iNKORE.UI.WPF.Modern.Gallery/Navigation/NavigationRootPage.xaml.cs index bbfc0733..5599de56 100644 --- a/source/iNKORE.UI.WPF.Modern.Gallery/Navigation/NavigationRootPage.xaml.cs +++ b/source/iNKORE.UI.WPF.Modern.Gallery/Navigation/NavigationRootPage.xaml.cs @@ -293,19 +293,33 @@ private void OnNavigationViewSelectionChanged(NavigationView sender, NavigationV _lastItem = item; rootFrame.Navigate(item); } + else if (selectedItem?.Tag?.ToString() == "Geometry") + { + var geometryId = "Geometry"; + if (_lastItem?.ToString() == geometryId) return; + _lastItem = geometryId; + var geometryItem = ControlInfoDataSource.Instance.Realms + .SelectMany(r => r.Groups) + .SelectMany(g => g.Items) + .FirstOrDefault(i => i.UniqueId == "Geometry"); + if (geometryItem != null) + { + rootFrame.Navigate(ItemPage.Create(geometryItem)); + } + } else if (selectedItem?.Tag?.ToString() == "Typography") { // Handle Typography navigation var typographyId = "Typography"; if (_lastItem?.ToString() == typographyId) return; _lastItem = typographyId; - + // Find Typography item from the data source var typographyItem = ControlInfoDataSource.Instance.Realms .SelectMany(r => r.Groups) .SelectMany(g => g.Items) .FirstOrDefault(i => i.UniqueId == "Typography"); - + if (typographyItem != null) { rootFrame.Navigate(ItemPage.Create(typographyItem)); From cd7a80143c43679c0118e1d58bfd4824370a56d4 Mon Sep 17 00:00:00 2001 From: GID Date: Fri, 29 Aug 2025 00:38:13 +0700 Subject: [PATCH 06/11] Add Geometry item in NavigationRootPage.xaml --- .../Navigation/NavigationRootPage.xaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Navigation/NavigationRootPage.xaml b/source/iNKORE.UI.WPF.Modern.Gallery/Navigation/NavigationRootPage.xaml index 61e9a267..b637fa60 100644 --- a/source/iNKORE.UI.WPF.Modern.Gallery/Navigation/NavigationRootPage.xaml +++ b/source/iNKORE.UI.WPF.Modern.Gallery/Navigation/NavigationRootPage.xaml @@ -121,6 +121,14 @@ + + + + + Date: Fri, 29 Aug 2025 01:00:42 +0700 Subject: [PATCH 07/11] Add temporary image theme aware support --- .../Foundation/Design/GeometryPage.xaml | 692 +++++++++--------- 1 file changed, 331 insertions(+), 361 deletions(-) diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml index 96b0efab..634ee086 100644 --- a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml +++ b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml @@ -1,361 +1,331 @@ - - - - - - - - - - Geometry describes the shape, size and position of UI elements on screen. These fundamental design elements help experiences feel coherent across the entire design system. WinUI uses three levels of rounding depending on what UI component is being rounded and how that component is arranged relative to neighboring elements. - You can reference built-in corner radii styles using: - CornerRadius="{DynamicResource ControlCornerRadius}". - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using iNKORE.UI.WPF.Modern.Controls; +using System; +using System.Windows; +using iNKORE.UI.WPF.Modern.Gallery; +using iNKORE.UI.WPF.Modern; +using System.Windows.Controls; +using Page = iNKORE.UI.WPF.Modern.Controls.Page; +using MessageBox = iNKORE.UI.WPF.Modern.Controls.MessageBox; +using System.Threading.Tasks; + +namespace iNKORE.UI.WPF.Modern.Gallery.Pages.Controls.Foundation +{ + /// + /// Geometry page showcasing Windows geometry values and layout examples. + /// + public partial class GeometryPage : Page + { + private ElementTheme _lastKnownTheme = ElementTheme.Default; + + public GeometryPage() + { + this.InitializeComponent(); + + Loaded += GeometryPage_Loaded; + + iNKORE.UI.WPF.Modern.ThemeManager.Current.ActualApplicationThemeChanged += OnThemeChanged; + iNKORE.UI.WPF.Modern.ThemeManager.AddActualThemeChangedHandler(this, OnElementThemeChanged); + + System.ComponentModel.DependencyPropertyDescriptor.FromProperty(iNKORE.UI.WPF.Modern.ThemeManager.RequestedThemeProperty, typeof(FrameworkElement)) + ?.AddValueChanged(this, OnRequestedThemeChanged); + + var _themeMonitorTimer = new System.Windows.Threading.DispatcherTimer + { + Interval = TimeSpan.FromMilliseconds(200) + }; + _themeMonitorTimer.Tick += ThemeMonitorTimer_Tick; + _themeMonitorTimer.Start(); + + UpdateExampleCode(); + } + + private void GeometryPage_Loaded(object sender, RoutedEventArgs e) + { + UpdateGeometryImage(); + } + + private void UpdateGeometryImage() + { + if (GeometryImage == null) return; + + var pageTheme = ThemeManager.GetActualTheme(this); + var parentTheme = ElementTheme.Default; + var controlExampleTheme = ElementTheme.Default; + + var parentElement = this.Parent as FrameworkElement; + while (parentElement != null) + { + var currentParentTheme = ThemeManager.GetActualTheme(parentElement); + if (currentParentTheme != ElementTheme.Default) + { + parentTheme = currentParentTheme; + break; + } + parentElement = parentElement.Parent as FrameworkElement; + } + + if (Example1 != null) + { + try + { + var exampleTheme = ThemeManager.GetActualTheme(Example1); + if (exampleTheme != ElementTheme.Default) + { + controlExampleTheme = exampleTheme; + } + else if (Example1.ExampleContainer != null) + { + var containerTheme = ThemeManager.GetActualTheme(Example1.ExampleContainer); + if (containerTheme != ElementTheme.Default) + { + controlExampleTheme = containerTheme; + } + } + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"Theme detection error: {ex.Message}"); + } + } + + var effectiveTheme = controlExampleTheme != ElementTheme.Default ? controlExampleTheme : + pageTheme != ElementTheme.Default ? pageTheme : parentTheme; + var isDarkTheme = effectiveTheme == ElementTheme.Dark || + (effectiveTheme == ElementTheme.Default && iNKORE.UI.WPF.Modern.Gallery.Helpers.ThemeHelper.IsDarkTheme()); + + var imageName = isDarkTheme ? "Geometry.dark.png" : "Geometry.light.png"; + var uri = new System.Uri($"pack://application:,,,/iNKORE.UI.WPF.Modern.Gallery;component/Assets/Design/{imageName}"); + + try + { + var bitmapImage = new System.Windows.Media.Imaging.BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.UriSource = uri; + bitmapImage.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad; + bitmapImage.CreateOptions = System.Windows.Media.Imaging.BitmapCreateOptions.IgnoreImageCache; + bitmapImage.EndInit(); + bitmapImage.Freeze(); + GeometryImage.Source = bitmapImage; + System.Diagnostics.Debug.WriteLine($"Geometry image updated to: {imageName}"); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"Failed to load geometry image: {ex.Message}"); + var fallbackUri = new System.Uri("pack://application:,,,/iNKORE.UI.WPF.Modern.Gallery;component/Assets/Design/Geometry.dark.png"); + GeometryImage.Source = new System.Windows.Media.Imaging.BitmapImage(fallbackUri); + } + } + + private void OnThemeChanged(iNKORE.UI.WPF.Modern.ThemeManager sender, object args) + { + UpdateGeometryImage(); + } + + private void OnElementThemeChanged(object sender, RoutedEventArgs e) + { + UpdateGeometryImage(); + } + + private void ThemeMonitorTimer_Tick(object sender, EventArgs e) + { + var currentTheme = iNKORE.UI.WPF.Modern.ThemeManager.GetActualTheme(this); + if (currentTheme != _lastKnownTheme) + { + _lastKnownTheme = currentTheme; + UpdateGeometryImage(); + System.Diagnostics.Debug.WriteLine($"Theme change detected: {currentTheme}"); + } + + var parentElement = this.Parent as FrameworkElement; + while (parentElement != null) + { + var parentTheme = ThemeManager.GetActualTheme(parentElement); + if (parentTheme != currentTheme) + { + UpdateGeometryImage(); + System.Diagnostics.Debug.WriteLine($"Element-level theme change detected: Parent={parentTheme}, Current={currentTheme}"); + break; + } + parentElement = parentElement.Parent as FrameworkElement; + } + + if (Example1 != null) + { + try + { + var controlExampleTheme = ThemeManager.GetActualTheme(Example1); + var containerTheme = ElementTheme.Default; + + if (Example1.ExampleContainer != null) + { + containerTheme = ThemeManager.GetActualTheme(Example1.ExampleContainer); + } + + if (controlExampleTheme != currentTheme || containerTheme != currentTheme) + { + UpdateGeometryImage(); + System.Diagnostics.Debug.WriteLine($"ControlExample theme change detected: ControlExample={controlExampleTheme}, Container={containerTheme}, Page={currentTheme}"); + } + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"Theme monitor error: {ex.Message}"); + } + } + } + + private void OnRequestedThemeChanged(object sender, EventArgs e) + { + Dispatcher.BeginInvoke(new System.Action(() => { + UpdateGeometryImage(); + }), System.Windows.Threading.DispatcherPriority.ApplicationIdle); + + var timer = new System.Windows.Threading.DispatcherTimer { Interval = TimeSpan.FromMilliseconds(100) }; + timer.Tick += (s, args) => { + timer.Stop(); + UpdateGeometryImage(); + }; + timer.Start(); + } + + // kept for backward compatibility if we want to programmatically set usage + public string Usage { get; set; } + + /// + /// Unified handler for resource-copy buttons that use the Tag property to store copy text. + /// (OverlayCornerRadiusCopyButton and ControlCornerRadiusCopyButton call this.) + /// + private async void CopyControlCornerRadiusButton_Click(object sender, RoutedEventArgs e) + { + try + { + // Use GoToElementState for FrameworkElement-based VSM. + bool started = VisualStateManager.GoToElementState(LayoutRoot, "ControlCornerRadiusCopyButtonVisible", true); + if (!started) + { + // MessageBox.Show("Could not find visual state 'ControlCornerRadiusCopyButtonVisible' on LayoutRoot.", "VSM", MessageBoxButton.OK, MessageBoxImage.Warning); + } + if (sender is Button btn && btn.Tag is string tagText) + { + Clipboard.SetText(tagText); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString(), "Unable to Perform Copy", MessageBoxButton.OK, MessageBoxImage.Error); + } + + await Task.Delay(1000); + + try + { + VisualStateManager.GoToElementState(LayoutRoot, "ControlCornerRadiusCopyButtonHidden", true); + } + catch + { + // swallow + } + } + + /// + /// Helper method: if we want resource-copy buttons to also show the same animation, + /// call this. Left public for optional reuse. + /// + public async Task ShowCopyConfirmationAnimationAsync() + { + try + { + VisualStateManager.GoToElementState(LayoutRoot, "ConfirmationDialogVisible", true); + } + catch { } + + await Task.Delay(1000); + + try + { + VisualStateManager.GoToElementState(LayoutRoot, "ConfirmationDialogHidden", true); + } + catch { } + } + + private async void OverlayCornerRadiusCopyButton_Click(object sender, RoutedEventArgs e) + { + try + { + bool started = VisualStateManager.GoToElementState(LayoutRoot, "OverlayCornerRadiusCopyButtonVisible", true); + if (!started) + { + // MessageBox.Show("Could not find visual state 'OverlayCornerRadiusCopyButtonVisible' on LayoutRoot.", "VSM", MessageBoxButton.OK, MessageBoxImage.Warning); + } + if (sender is Button btn && btn.Tag is string tagText) + { + Clipboard.SetText(tagText); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString(), "Unable to Perform Copy", MessageBoxButton.OK, MessageBoxImage.Error); + } + + await Task.Delay(1000); + + try + { + VisualStateManager.GoToElementState(LayoutRoot, "OverlayCornerRadiusCopyButtonHidden", true); + } + catch + { + // swallow + } + } + + private void ShowGeometryButtonClick1(object sender, RoutedEventArgs e) + { + if (sender is Button button) + { + var flyout = FlyoutService.GetFlyout(button); + if (flyout != null) + { + flyout.ShowAt(button); + } + } + } + + private void ShowGeometryButtonClick2(object sender, RoutedEventArgs e) + { + if (sender is Button button) + { + var flyout = FlyoutService.GetFlyout(button); + if (flyout != null) + { + flyout.ShowAt(button); + } + } + } + + private void ShowGeometryButtonClick3(object sender, RoutedEventArgs e) + { + if (sender is Button button) + { + var flyout = FlyoutService.GetFlyout(button); + if (flyout != null) + { + flyout.ShowAt(button); + } + } + } + + private void UpdateExampleCode() + { + Example1.Xaml = Example1Xaml; + } + + string Example1Xaml => @" + +"; + + } +} From 4fbba960ac65fec662e0c74342a5939810c949b5 Mon Sep 17 00:00:00 2001 From: GID Date: Fri, 29 Aug 2025 01:36:59 +0700 Subject: [PATCH 08/11] Revert wrong change to include right one --- .../Foundation/Design/GeometryPage.xaml | 692 +++++++++--------- 1 file changed, 361 insertions(+), 331 deletions(-) diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml index 634ee086..96b0efab 100644 --- a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml +++ b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml @@ -1,331 +1,361 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using iNKORE.UI.WPF.Modern.Controls; -using System; -using System.Windows; -using iNKORE.UI.WPF.Modern.Gallery; -using iNKORE.UI.WPF.Modern; -using System.Windows.Controls; -using Page = iNKORE.UI.WPF.Modern.Controls.Page; -using MessageBox = iNKORE.UI.WPF.Modern.Controls.MessageBox; -using System.Threading.Tasks; - -namespace iNKORE.UI.WPF.Modern.Gallery.Pages.Controls.Foundation -{ - /// - /// Geometry page showcasing Windows geometry values and layout examples. - /// - public partial class GeometryPage : Page - { - private ElementTheme _lastKnownTheme = ElementTheme.Default; - - public GeometryPage() - { - this.InitializeComponent(); - - Loaded += GeometryPage_Loaded; - - iNKORE.UI.WPF.Modern.ThemeManager.Current.ActualApplicationThemeChanged += OnThemeChanged; - iNKORE.UI.WPF.Modern.ThemeManager.AddActualThemeChangedHandler(this, OnElementThemeChanged); - - System.ComponentModel.DependencyPropertyDescriptor.FromProperty(iNKORE.UI.WPF.Modern.ThemeManager.RequestedThemeProperty, typeof(FrameworkElement)) - ?.AddValueChanged(this, OnRequestedThemeChanged); - - var _themeMonitorTimer = new System.Windows.Threading.DispatcherTimer - { - Interval = TimeSpan.FromMilliseconds(200) - }; - _themeMonitorTimer.Tick += ThemeMonitorTimer_Tick; - _themeMonitorTimer.Start(); - - UpdateExampleCode(); - } - - private void GeometryPage_Loaded(object sender, RoutedEventArgs e) - { - UpdateGeometryImage(); - } - - private void UpdateGeometryImage() - { - if (GeometryImage == null) return; - - var pageTheme = ThemeManager.GetActualTheme(this); - var parentTheme = ElementTheme.Default; - var controlExampleTheme = ElementTheme.Default; - - var parentElement = this.Parent as FrameworkElement; - while (parentElement != null) - { - var currentParentTheme = ThemeManager.GetActualTheme(parentElement); - if (currentParentTheme != ElementTheme.Default) - { - parentTheme = currentParentTheme; - break; - } - parentElement = parentElement.Parent as FrameworkElement; - } - - if (Example1 != null) - { - try - { - var exampleTheme = ThemeManager.GetActualTheme(Example1); - if (exampleTheme != ElementTheme.Default) - { - controlExampleTheme = exampleTheme; - } - else if (Example1.ExampleContainer != null) - { - var containerTheme = ThemeManager.GetActualTheme(Example1.ExampleContainer); - if (containerTheme != ElementTheme.Default) - { - controlExampleTheme = containerTheme; - } - } - } - catch (Exception ex) - { - System.Diagnostics.Debug.WriteLine($"Theme detection error: {ex.Message}"); - } - } - - var effectiveTheme = controlExampleTheme != ElementTheme.Default ? controlExampleTheme : - pageTheme != ElementTheme.Default ? pageTheme : parentTheme; - var isDarkTheme = effectiveTheme == ElementTheme.Dark || - (effectiveTheme == ElementTheme.Default && iNKORE.UI.WPF.Modern.Gallery.Helpers.ThemeHelper.IsDarkTheme()); - - var imageName = isDarkTheme ? "Geometry.dark.png" : "Geometry.light.png"; - var uri = new System.Uri($"pack://application:,,,/iNKORE.UI.WPF.Modern.Gallery;component/Assets/Design/{imageName}"); - - try - { - var bitmapImage = new System.Windows.Media.Imaging.BitmapImage(); - bitmapImage.BeginInit(); - bitmapImage.UriSource = uri; - bitmapImage.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad; - bitmapImage.CreateOptions = System.Windows.Media.Imaging.BitmapCreateOptions.IgnoreImageCache; - bitmapImage.EndInit(); - bitmapImage.Freeze(); - GeometryImage.Source = bitmapImage; - System.Diagnostics.Debug.WriteLine($"Geometry image updated to: {imageName}"); - } - catch (Exception ex) - { - System.Diagnostics.Debug.WriteLine($"Failed to load geometry image: {ex.Message}"); - var fallbackUri = new System.Uri("pack://application:,,,/iNKORE.UI.WPF.Modern.Gallery;component/Assets/Design/Geometry.dark.png"); - GeometryImage.Source = new System.Windows.Media.Imaging.BitmapImage(fallbackUri); - } - } - - private void OnThemeChanged(iNKORE.UI.WPF.Modern.ThemeManager sender, object args) - { - UpdateGeometryImage(); - } - - private void OnElementThemeChanged(object sender, RoutedEventArgs e) - { - UpdateGeometryImage(); - } - - private void ThemeMonitorTimer_Tick(object sender, EventArgs e) - { - var currentTheme = iNKORE.UI.WPF.Modern.ThemeManager.GetActualTheme(this); - if (currentTheme != _lastKnownTheme) - { - _lastKnownTheme = currentTheme; - UpdateGeometryImage(); - System.Diagnostics.Debug.WriteLine($"Theme change detected: {currentTheme}"); - } - - var parentElement = this.Parent as FrameworkElement; - while (parentElement != null) - { - var parentTheme = ThemeManager.GetActualTheme(parentElement); - if (parentTheme != currentTheme) - { - UpdateGeometryImage(); - System.Diagnostics.Debug.WriteLine($"Element-level theme change detected: Parent={parentTheme}, Current={currentTheme}"); - break; - } - parentElement = parentElement.Parent as FrameworkElement; - } - - if (Example1 != null) - { - try - { - var controlExampleTheme = ThemeManager.GetActualTheme(Example1); - var containerTheme = ElementTheme.Default; - - if (Example1.ExampleContainer != null) - { - containerTheme = ThemeManager.GetActualTheme(Example1.ExampleContainer); - } - - if (controlExampleTheme != currentTheme || containerTheme != currentTheme) - { - UpdateGeometryImage(); - System.Diagnostics.Debug.WriteLine($"ControlExample theme change detected: ControlExample={controlExampleTheme}, Container={containerTheme}, Page={currentTheme}"); - } - } - catch (Exception ex) - { - System.Diagnostics.Debug.WriteLine($"Theme monitor error: {ex.Message}"); - } - } - } - - private void OnRequestedThemeChanged(object sender, EventArgs e) - { - Dispatcher.BeginInvoke(new System.Action(() => { - UpdateGeometryImage(); - }), System.Windows.Threading.DispatcherPriority.ApplicationIdle); - - var timer = new System.Windows.Threading.DispatcherTimer { Interval = TimeSpan.FromMilliseconds(100) }; - timer.Tick += (s, args) => { - timer.Stop(); - UpdateGeometryImage(); - }; - timer.Start(); - } - - // kept for backward compatibility if we want to programmatically set usage - public string Usage { get; set; } - - /// - /// Unified handler for resource-copy buttons that use the Tag property to store copy text. - /// (OverlayCornerRadiusCopyButton and ControlCornerRadiusCopyButton call this.) - /// - private async void CopyControlCornerRadiusButton_Click(object sender, RoutedEventArgs e) - { - try - { - // Use GoToElementState for FrameworkElement-based VSM. - bool started = VisualStateManager.GoToElementState(LayoutRoot, "ControlCornerRadiusCopyButtonVisible", true); - if (!started) - { - // MessageBox.Show("Could not find visual state 'ControlCornerRadiusCopyButtonVisible' on LayoutRoot.", "VSM", MessageBoxButton.OK, MessageBoxImage.Warning); - } - if (sender is Button btn && btn.Tag is string tagText) - { - Clipboard.SetText(tagText); - } - } - catch (Exception ex) - { - MessageBox.Show(ex.ToString(), "Unable to Perform Copy", MessageBoxButton.OK, MessageBoxImage.Error); - } - - await Task.Delay(1000); - - try - { - VisualStateManager.GoToElementState(LayoutRoot, "ControlCornerRadiusCopyButtonHidden", true); - } - catch - { - // swallow - } - } - - /// - /// Helper method: if we want resource-copy buttons to also show the same animation, - /// call this. Left public for optional reuse. - /// - public async Task ShowCopyConfirmationAnimationAsync() - { - try - { - VisualStateManager.GoToElementState(LayoutRoot, "ConfirmationDialogVisible", true); - } - catch { } - - await Task.Delay(1000); - - try - { - VisualStateManager.GoToElementState(LayoutRoot, "ConfirmationDialogHidden", true); - } - catch { } - } - - private async void OverlayCornerRadiusCopyButton_Click(object sender, RoutedEventArgs e) - { - try - { - bool started = VisualStateManager.GoToElementState(LayoutRoot, "OverlayCornerRadiusCopyButtonVisible", true); - if (!started) - { - // MessageBox.Show("Could not find visual state 'OverlayCornerRadiusCopyButtonVisible' on LayoutRoot.", "VSM", MessageBoxButton.OK, MessageBoxImage.Warning); - } - if (sender is Button btn && btn.Tag is string tagText) - { - Clipboard.SetText(tagText); - } - } - catch (Exception ex) - { - MessageBox.Show(ex.ToString(), "Unable to Perform Copy", MessageBoxButton.OK, MessageBoxImage.Error); - } - - await Task.Delay(1000); - - try - { - VisualStateManager.GoToElementState(LayoutRoot, "OverlayCornerRadiusCopyButtonHidden", true); - } - catch - { - // swallow - } - } - - private void ShowGeometryButtonClick1(object sender, RoutedEventArgs e) - { - if (sender is Button button) - { - var flyout = FlyoutService.GetFlyout(button); - if (flyout != null) - { - flyout.ShowAt(button); - } - } - } - - private void ShowGeometryButtonClick2(object sender, RoutedEventArgs e) - { - if (sender is Button button) - { - var flyout = FlyoutService.GetFlyout(button); - if (flyout != null) - { - flyout.ShowAt(button); - } - } - } - - private void ShowGeometryButtonClick3(object sender, RoutedEventArgs e) - { - if (sender is Button button) - { - var flyout = FlyoutService.GetFlyout(button); - if (flyout != null) - { - flyout.ShowAt(button); - } - } - } - - private void UpdateExampleCode() - { - Example1.Xaml = Example1Xaml; - } - - string Example1Xaml => @" - -"; - - } -} + + + + + + + + + + Geometry describes the shape, size and position of UI elements on screen. These fundamental design elements help experiences feel coherent across the entire design system. WinUI uses three levels of rounding depending on what UI component is being rounded and how that component is arranged relative to neighboring elements. + You can reference built-in corner radii styles using: + CornerRadius="{DynamicResource ControlCornerRadius}". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 1a33793655dc046a71fea55b3f240ec8ac06f2e7 Mon Sep 17 00:00:00 2001 From: GID Date: Fri, 29 Aug 2025 01:38:12 +0700 Subject: [PATCH 09/11] Implement GeometryPage temporary theme aware image --- .../Foundation/Design/GeometryPage.xaml.cs | 169 +++++++++++++++++- 1 file changed, 168 insertions(+), 1 deletion(-) diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml.cs b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml.cs index 5ffb6601..634ee086 100644 --- a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml.cs +++ b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml.cs @@ -5,6 +5,7 @@ using System; using System.Windows; using iNKORE.UI.WPF.Modern.Gallery; +using iNKORE.UI.WPF.Modern; using System.Windows.Controls; using Page = iNKORE.UI.WPF.Modern.Controls.Page; using MessageBox = iNKORE.UI.WPF.Modern.Controls.MessageBox; @@ -17,13 +18,179 @@ namespace iNKORE.UI.WPF.Modern.Gallery.Pages.Controls.Foundation /// public partial class GeometryPage : Page { + private ElementTheme _lastKnownTheme = ElementTheme.Default; + public GeometryPage() { this.InitializeComponent(); + Loaded += GeometryPage_Loaded; + + iNKORE.UI.WPF.Modern.ThemeManager.Current.ActualApplicationThemeChanged += OnThemeChanged; + iNKORE.UI.WPF.Modern.ThemeManager.AddActualThemeChangedHandler(this, OnElementThemeChanged); + + System.ComponentModel.DependencyPropertyDescriptor.FromProperty(iNKORE.UI.WPF.Modern.ThemeManager.RequestedThemeProperty, typeof(FrameworkElement)) + ?.AddValueChanged(this, OnRequestedThemeChanged); + + var _themeMonitorTimer = new System.Windows.Threading.DispatcherTimer + { + Interval = TimeSpan.FromMilliseconds(200) + }; + _themeMonitorTimer.Tick += ThemeMonitorTimer_Tick; + _themeMonitorTimer.Start(); + UpdateExampleCode(); } + private void GeometryPage_Loaded(object sender, RoutedEventArgs e) + { + UpdateGeometryImage(); + } + + private void UpdateGeometryImage() + { + if (GeometryImage == null) return; + + var pageTheme = ThemeManager.GetActualTheme(this); + var parentTheme = ElementTheme.Default; + var controlExampleTheme = ElementTheme.Default; + + var parentElement = this.Parent as FrameworkElement; + while (parentElement != null) + { + var currentParentTheme = ThemeManager.GetActualTheme(parentElement); + if (currentParentTheme != ElementTheme.Default) + { + parentTheme = currentParentTheme; + break; + } + parentElement = parentElement.Parent as FrameworkElement; + } + + if (Example1 != null) + { + try + { + var exampleTheme = ThemeManager.GetActualTheme(Example1); + if (exampleTheme != ElementTheme.Default) + { + controlExampleTheme = exampleTheme; + } + else if (Example1.ExampleContainer != null) + { + var containerTheme = ThemeManager.GetActualTheme(Example1.ExampleContainer); + if (containerTheme != ElementTheme.Default) + { + controlExampleTheme = containerTheme; + } + } + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"Theme detection error: {ex.Message}"); + } + } + + var effectiveTheme = controlExampleTheme != ElementTheme.Default ? controlExampleTheme : + pageTheme != ElementTheme.Default ? pageTheme : parentTheme; + var isDarkTheme = effectiveTheme == ElementTheme.Dark || + (effectiveTheme == ElementTheme.Default && iNKORE.UI.WPF.Modern.Gallery.Helpers.ThemeHelper.IsDarkTheme()); + + var imageName = isDarkTheme ? "Geometry.dark.png" : "Geometry.light.png"; + var uri = new System.Uri($"pack://application:,,,/iNKORE.UI.WPF.Modern.Gallery;component/Assets/Design/{imageName}"); + + try + { + var bitmapImage = new System.Windows.Media.Imaging.BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.UriSource = uri; + bitmapImage.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad; + bitmapImage.CreateOptions = System.Windows.Media.Imaging.BitmapCreateOptions.IgnoreImageCache; + bitmapImage.EndInit(); + bitmapImage.Freeze(); + GeometryImage.Source = bitmapImage; + System.Diagnostics.Debug.WriteLine($"Geometry image updated to: {imageName}"); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"Failed to load geometry image: {ex.Message}"); + var fallbackUri = new System.Uri("pack://application:,,,/iNKORE.UI.WPF.Modern.Gallery;component/Assets/Design/Geometry.dark.png"); + GeometryImage.Source = new System.Windows.Media.Imaging.BitmapImage(fallbackUri); + } + } + + private void OnThemeChanged(iNKORE.UI.WPF.Modern.ThemeManager sender, object args) + { + UpdateGeometryImage(); + } + + private void OnElementThemeChanged(object sender, RoutedEventArgs e) + { + UpdateGeometryImage(); + } + + private void ThemeMonitorTimer_Tick(object sender, EventArgs e) + { + var currentTheme = iNKORE.UI.WPF.Modern.ThemeManager.GetActualTheme(this); + if (currentTheme != _lastKnownTheme) + { + _lastKnownTheme = currentTheme; + UpdateGeometryImage(); + System.Diagnostics.Debug.WriteLine($"Theme change detected: {currentTheme}"); + } + + var parentElement = this.Parent as FrameworkElement; + while (parentElement != null) + { + var parentTheme = ThemeManager.GetActualTheme(parentElement); + if (parentTheme != currentTheme) + { + UpdateGeometryImage(); + System.Diagnostics.Debug.WriteLine($"Element-level theme change detected: Parent={parentTheme}, Current={currentTheme}"); + break; + } + parentElement = parentElement.Parent as FrameworkElement; + } + + if (Example1 != null) + { + try + { + var controlExampleTheme = ThemeManager.GetActualTheme(Example1); + var containerTheme = ElementTheme.Default; + + if (Example1.ExampleContainer != null) + { + containerTheme = ThemeManager.GetActualTheme(Example1.ExampleContainer); + } + + if (controlExampleTheme != currentTheme || containerTheme != currentTheme) + { + UpdateGeometryImage(); + System.Diagnostics.Debug.WriteLine($"ControlExample theme change detected: ControlExample={controlExampleTheme}, Container={containerTheme}, Page={currentTheme}"); + } + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"Theme monitor error: {ex.Message}"); + } + } + } + + private void OnRequestedThemeChanged(object sender, EventArgs e) + { + Dispatcher.BeginInvoke(new System.Action(() => { + UpdateGeometryImage(); + }), System.Windows.Threading.DispatcherPriority.ApplicationIdle); + + var timer = new System.Windows.Threading.DispatcherTimer { Interval = TimeSpan.FromMilliseconds(100) }; + timer.Tick += (s, args) => { + timer.Stop(); + UpdateGeometryImage(); + }; + timer.Start(); + } + // kept for backward compatibility if we want to programmatically set usage public string Usage { get; set; } @@ -64,7 +231,7 @@ private async void CopyControlCornerRadiusButton_Click(object sender, RoutedEven } /// - /// Helper method: if you want resource-copy buttons to also show the same animation, + /// Helper method: if we want resource-copy buttons to also show the same animation, /// call this. Left public for optional reuse. /// public async Task ShowCopyConfirmationAnimationAsync() From 70bf6536f52546eff5adf833b650f5284a4d8662 Mon Sep 17 00:00:00 2001 From: GID Date: Tue, 2 Sep 2025 14:45:52 +0700 Subject: [PATCH 10/11] Refactor GeometryPage layout and controls adjust with, margin and add text usage for better usability --- .../Foundation/Design/GeometryPage.xaml | 186 ++++++++++++------ 1 file changed, 124 insertions(+), 62 deletions(-) diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml index 96b0efab..964a50e1 100644 --- a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml +++ b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml @@ -113,13 +113,13 @@ - + - + @@ -135,9 +135,9 @@ - + - + + + + + + + + + + @@ -195,9 +218,9 @@ - + - + + + + + + + + + + @@ -255,9 +301,9 @@ - + + From c7f76a543f943734bb44b0365cf5ce22950d3ae9 Mon Sep 17 00:00:00 2001 From: GID Date: Tue, 2 Sep 2025 15:14:16 +0700 Subject: [PATCH 11/11] Change DynamicResource to StaticResource for CornerRadius in the page descriptions --- .../Pages/Controls/Foundation/Design/GeometryPage.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml index 964a50e1..965d3e36 100644 --- a/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml +++ b/source/iNKORE.UI.WPF.Modern.Gallery/Pages/Controls/Foundation/Design/GeometryPage.xaml @@ -19,7 +19,7 @@ Geometry describes the shape, size and position of UI elements on screen. These fundamental design elements help experiences feel coherent across the entire design system. WinUI uses three levels of rounding depending on what UI component is being rounded and how that component is arranged relative to neighboring elements. You can reference built-in corner radii styles using: - CornerRadius="{DynamicResource ControlCornerRadius}". + CornerRadius="{StaticResource ControlCornerRadius}".