diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue7992.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue7992.cs
new file mode 100644
index 00000000000..7f4abf1ef15
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue7992.cs
@@ -0,0 +1,49 @@
+using Xamarin.Forms.CustomAttributes;
+using Xamarin.Forms.Internals;
+
+namespace Xamarin.Forms.Controls.Issues
+{
+ [Preserve(AllMembers = true)]
+ [Issue(IssueTracker.Github, 7992, "Datepicker is not opened when we call Datepicker.Focus() in UWP", PlatformAffected.UWP)]
+
+ public class Issue7992 : TestContentPage
+ {
+ protected override void Init()
+ {
+ var stackLayout = new StackLayout();
+ Content = stackLayout;
+
+ stackLayout.Children.Add(new Label
+ {
+ Text = "Label to keep picker from getting initial focus"
+ });
+
+ var datePicker = new DatePicker();
+ stackLayout.Children.Add(datePicker);
+
+ var buttonFocus = new Button
+ {
+ Text = "Calls Focus() on the date picker, which should open a date picker flyout."
+ };
+ buttonFocus.Clicked += (s, e) =>
+ {
+ datePicker.IsVisible = true;
+ datePicker.Focus();
+ };
+ stackLayout.Children.Add(buttonFocus);
+
+ var buttonNotVisible = new Button
+ {
+ Text = "Makes the picker not visible and calls Focus(), which should open a full screen picker flyout."
+ };
+ buttonNotVisible.Clicked += (s, e) =>
+ {
+ datePicker.IsVisible = false;
+ datePicker.Focus();
+ };
+ stackLayout.Children.Add(buttonNotVisible);
+
+ }
+
+ }
+}
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
index c458f0543b0..26b95f1d6f3 100644
--- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
@@ -112,6 +112,7 @@
Code
+
Code
@@ -1758,4 +1759,4 @@
MSBuild:Compile
-
+
\ No newline at end of file
diff --git a/Xamarin.Forms.Platform.UAP/DatePickerRenderer.cs b/Xamarin.Forms.Platform.UAP/DatePickerRenderer.cs
index 9902583414b..3a8457b5d48 100644
--- a/Xamarin.Forms.Platform.UAP/DatePickerRenderer.cs
+++ b/Xamarin.Forms.Platform.UAP/DatePickerRenderer.cs
@@ -4,6 +4,7 @@
using Windows.UI.Text;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Documents;
using Windows.UI.Xaml.Media;
using Xamarin.Forms.Internals;
@@ -65,6 +66,18 @@ void ControlOnLoaded(object sender, RoutedEventArgs routedEventArgs)
UpdateTextColor();
}
+ internal override void OnElementFocusChangeRequested(object sender, VisualElement.FocusRequestArgs args)
+ {
+ base.OnElementFocusChangeRequested(sender, args);
+
+ // Show a picker fly out on focus to match iOS and Android behavior
+ var flyout = new DatePickerFlyout { Placement = FlyoutPlacementMode.Bottom, Date = Control.Date };
+ flyout.DatePicked += (p, e) => Control.Date = p.Date;
+ if (!Element.IsVisible)
+ flyout.Placement = FlyoutPlacementMode.Full;
+ flyout.ShowAt(Control);
+ }
+
void WireUpFormsVsm()
{
if (!Element.UseFormsVsm())