From 13c87161de8a9c4b48a0b5f6a55c980163ad4c1e Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 15 Jun 2021 00:29:38 +0200 Subject: [PATCH] feat: ComboBox.OnDropDownOpened/Closed --- .../Windows.UI.Xaml.Controls/ComboBox.cs | 4 ++-- .../UI/Xaml/Controls/ComboBox/ComboBox.cs | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/Uno.UI/Generated/3.0.0.0/Windows.UI.Xaml.Controls/ComboBox.cs b/src/Uno.UI/Generated/3.0.0.0/Windows.UI.Xaml.Controls/ComboBox.cs index 211c0771c92c..d8c055410daa 100644 --- a/src/Uno.UI/Generated/3.0.0.0/Windows.UI.Xaml.Controls/ComboBox.cs +++ b/src/Uno.UI/Generated/3.0.0.0/Windows.UI.Xaml.Controls/ComboBox.cs @@ -242,14 +242,14 @@ public object Description // Forced skipping of method Windows.UI.Xaml.Controls.ComboBox.Description.set // Forced skipping of method Windows.UI.Xaml.Controls.ComboBox.TextSubmitted.add // Forced skipping of method Windows.UI.Xaml.Controls.ComboBox.TextSubmitted.remove - #if __ANDROID__ || __IOS__ || NET461 || __WASM__ || __SKIA__ || __NETSTD_REFERENCE__ || __MACOS__ + #if false [global::Uno.NotImplemented("__ANDROID__", "__IOS__", "NET461", "__WASM__", "__SKIA__", "__NETSTD_REFERENCE__", "__MACOS__")] protected virtual void OnDropDownClosed( object e) { global::Windows.Foundation.Metadata.ApiInformation.TryRaiseNotImplemented("Windows.UI.Xaml.Controls.ComboBox", "void ComboBox.OnDropDownClosed(object e)"); } #endif - #if __ANDROID__ || __IOS__ || NET461 || __WASM__ || __SKIA__ || __NETSTD_REFERENCE__ || __MACOS__ + #if false [global::Uno.NotImplemented("__ANDROID__", "__IOS__", "NET461", "__WASM__", "__SKIA__", "__NETSTD_REFERENCE__", "__MACOS__")] protected virtual void OnDropDownOpened( object e) { diff --git a/src/Uno.UI/UI/Xaml/Controls/ComboBox/ComboBox.cs b/src/Uno.UI/UI/Xaml/Controls/ComboBox/ComboBox.cs index 68e04b417351..9fdecc7fd2b9 100644 --- a/src/Uno.UI/UI/Xaml/Controls/ComboBox/ComboBox.cs +++ b/src/Uno.UI/UI/Xaml/Controls/ComboBox/ComboBox.cs @@ -165,6 +165,16 @@ private protected override void OnUnloaded() Xaml.Window.Current.SizeChanged -= OnWindowSizeChanged; } + protected virtual void OnDropDownClosed(object e) + { + DropDownClosed?.Invoke(this, null!); + } + + protected virtual void OnDropDownOpened(object e) + { + DropDownOpened?.Invoke(this, null!); + } + private void OnWindowSizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e) { IsDropDownOpen = false; @@ -370,9 +380,10 @@ partial void OnIsDropDownOpenChangedPartial(bool oldIsDropDownOpen, bool newIsDr _popup.IsOpen = newIsDropDownOpen; } + var args = new RoutedEventArgs() { OriginalSource = this }; if (newIsDropDownOpen) { - DropDownOpened?.Invoke(this, newIsDropDownOpen); + OnDropDownOpened(args); RestoreSelectedItem(); @@ -383,8 +394,11 @@ partial void OnIsDropDownOpenChangedPartial(bool oldIsDropDownOpen, bool newIsDr } else { - DropDownClosed?.Invoke(this, newIsDropDownOpen); + OnDropDownClosed(args); UpdateContentPresenter(); + + // Focus moves to ComboBox after item is selected. + Focus(FocusState.Programmatic); } UpdateDropDownState();