diff --git a/src/Uno.Toolkit.RuntimeTests/Tests/NavigationBarTests.cs b/src/Uno.Toolkit.RuntimeTests/Tests/NavigationBarTests.cs index 09a989016..a9a339969 100644 --- a/src/Uno.Toolkit.RuntimeTests/Tests/NavigationBarTests.cs +++ b/src/Uno.Toolkit.RuntimeTests/Tests/NavigationBarTests.cs @@ -480,7 +480,32 @@ private static void AssertNavigationBar(Frame frame) #endif #endif - private sealed partial class FirstPage : Page + [TestMethod] + public async Task MainCommandStyle_Applied_From_NavigationBar_Style() + { + // Create a style for MainCommand with a specific icon + var mainCommandStyle = new Style(typeof(AppBarButton)); + mainCommandStyle.Setters.Add(new Setter(AppBarButton.IconProperty, new SymbolIcon(Symbol.Back))); + + // Create NavigationBar with MainCommandStyle set + var navigationBar = new NavigationBar + { + Content = "Title", + MainCommandMode = MainCommandMode.Action, + MainCommandStyle = mainCommandStyle + }; + + var content = new Grid { Children = { navigationBar } }; + await UnitTestUIContentHelperEx.SetContentAndWait(content); + await UnitTestsUIContentHelper.WaitForIdle(); + + // Verify that MainCommand has the style applied + Assert.IsNotNull(navigationBar.MainCommand, "MainCommand should not be null"); + Assert.IsNotNull(navigationBar.MainCommand.Style, "MainCommand.Style should not be null"); + Assert.AreEqual(mainCommandStyle, navigationBar.MainCommand.Style, "MainCommand should have the MainCommandStyle applied"); + } + + private sealed partial class FirstPage : Page { public FirstPage() { diff --git a/src/Uno.Toolkit.UI/Controls/NavigationBar/NavigationBar.cs b/src/Uno.Toolkit.UI/Controls/NavigationBar/NavigationBar.cs index 02aea731d..5dc8341ec 100644 --- a/src/Uno.Toolkit.UI/Controls/NavigationBar/NavigationBar.cs +++ b/src/Uno.Toolkit.UI/Controls/NavigationBar/NavigationBar.cs @@ -234,6 +234,12 @@ private void OnPropertyChanged(DependencyPropertyChangedEventArgs args) if (args.Property == MainCommandProperty) { UpdateMainCommandVisibility(); + + // Apply MainCommandStyle to the new MainCommand instance + if (MainCommand is { } mainCommand && MainCommandStyle is { } mainCommandStyle) + { + mainCommand.Style = mainCommandStyle; + } } else if (args.Property == MainCommandModeProperty) {