diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/SearchBarMaxLength.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/SearchBarMaxLength.png
new file mode 100644
index 000000000000..7b47da284f43
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/SearchBarMaxLength.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue5669.xaml b/src/Controls/tests/TestCases.HostApp/Issues/Issue5669.xaml
new file mode 100644
index 000000000000..b8398fb699c1
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue5669.xaml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue5669.xaml.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue5669.xaml.cs
new file mode 100644
index 000000000000..c7e1097b66b5
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue5669.xaml.cs
@@ -0,0 +1,17 @@
+namespace Maui.Controls.Sample.Issues
+{
+ [XamlCompilation(XamlCompilationOptions.Compile)]
+ [Issue(IssueTracker.Github, 5669, "Windows SearchBar MaxLength > 0 not working properly", PlatformAffected.UWP)]
+ public partial class Issue5669 : ContentPage
+ {
+ public Issue5669()
+ {
+ InitializeComponent();
+ }
+
+ private void Button_Clicked(object sender, EventArgs e)
+ {
+ searchbar.MaxLength = 4;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue5669.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue5669.cs
new file mode 100644
index 000000000000..e59c031b6555
--- /dev/null
+++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue5669.cs
@@ -0,0 +1,28 @@
+#if !MACCATALYST
+using NUnit.Framework;
+using UITest.Appium;
+using UITest.Core;
+
+namespace Microsoft.Maui.TestCases.Tests.Issues
+{
+ public class Issue5669: _IssuesUITest
+ {
+ public override string Issue => "Windows SearchBar MaxLength > 0 not working properly";
+ public Issue5669(TestDevice testDevice) : base(testDevice)
+ {
+ }
+
+ [Test]
+ [Category(UITestCategories.SearchBar)]
+ public void SearchBarMaxLength()
+ {
+ App.WaitForElement("SearchBar");
+ App.EnterText("SearchBar", "r");
+ App.Click("ChangeValue");
+ App.EnterText("SearchBar", "r");
+ App.EnterText("SearchBar", "c");
+ VerifyScreenshot();
+ }
+ }
+}
+#endif
diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/SearchBarMaxLength.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/SearchBarMaxLength.png
new file mode 100644
index 000000000000..424c8d858137
Binary files /dev/null and b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/SearchBarMaxLength.png differ
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/SearchBarMaxLength.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/SearchBarMaxLength.png
new file mode 100644
index 000000000000..f8acc88a1cb5
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/SearchBarMaxLength.png differ
diff --git a/src/Core/src/Platform/Windows/SearchBarExtensions.cs b/src/Core/src/Platform/Windows/SearchBarExtensions.cs
index 93e69667f358..04067c2b00dd 100644
--- a/src/Core/src/Platform/Windows/SearchBarExtensions.cs
+++ b/src/Core/src/Platform/Windows/SearchBarExtensions.cs
@@ -112,6 +112,19 @@ public static void UpdateMaxLength(this AutoSuggestBox platformControl, ISearchB
if (maxLength == -1)
maxLength = int.MaxValue;
+ var children = platformControl.GetChildren();
+ if (children is not null)
+ {
+ foreach (var textBox in children)
+ {
+ if (textBox is not null)
+ {
+ textBox.MaxLength = searchBar.MaxLength;
+ break;
+ }
+ }
+ }
+
if (maxLength == 0)
MauiAutoSuggestBox.SetIsReadOnly(platformControl, true);
else