Skip to content

Commit

Permalink
Shell BackButtonBehavior improvement (dotnet#23424)
Browse files Browse the repository at this point in the history
  • Loading branch information
kubaflo committed Jul 6, 2024
1 parent 8d9a1a5 commit fd499cb
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -342,8 +342,13 @@ void UpdateLeftToolbarItems()
if (icon != null)
{
NavigationItem.LeftBarButtonItem =
new UIBarButtonItem(icon, UIBarButtonItemStyle.Plain, (s, e) => LeftBarButtonItemHandler(ViewController, IsRootPage)) { Enabled = enabled };
if (IsRootPage || backButtonVisible)
{
NavigationItem.LeftBarButtonItem =
new UIBarButtonItem(icon, UIBarButtonItemStyle.Plain, (s, e) => LeftBarButtonItemHandler(ViewController, IsRootPage)) { Enabled = enabled };
}
else
NavigationItem.LeftBarButtonItem = null;
}
else
{
Expand Down
36 changes: 36 additions & 0 deletions src/Controls/tests/TestCases.HostApp/Issues/Issue23424.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
namespace Maui.Controls.Sample.Issues;

[XamlCompilation(XamlCompilationOptions.Compile)]
[Issue(IssueTracker.Github, "23424", "BackButtonBehavior IsVisible=False does not hide the back button", PlatformAffected.All)]
public partial class Issue23424 : Shell
{
public Issue23424()
{
Items.Add(new ContentPage());
Routing.RegisterRoute(nameof(DetailPage),typeof(DetailPage));
GoToAsync(nameof(DetailPage));
}

public class DetailPage : ContentPage
{
public DetailPage()
{
Title = "Detail page";
BackButtonBehavior backButtonBehavior = new BackButtonBehavior
{
IconOverride = "small_dotnet_bot.png"
};

SetBackButtonBehavior(this, backButtonBehavior);
Content = new VerticalStackLayout()
{
new Button()
{
AutomationId = "button",
Text = "Click to hide the back button",
Command = new Command(()=>backButtonBehavior.IsVisible =! backButtonBehavior.IsVisible)
}
};
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using NUnit.Framework;
using UITest.Appium;
using UITest.Core;

namespace Microsoft.Maui.TestCases.Tests.Issues
{
public class Issue23424: _IssuesUITest
{
public Issue23424(TestDevice device) : base(device)
{
}

public override string Issue => "BackButtonBehavior IsVisible=False does not hide the back button";

[Test]
[Category(UITestCategories.Shell)]
public void RadioButtonWithValueChangeSelected()
{
App.WaitForElement("button");
App.Click("button");

// The test passes if the back button is not visible
VerifyScreenshot();
}
}
}

0 comments on commit fd499cb

Please sign in to comment.