From 7917d2fbc09cc78de45ee4dbb3542a4595366c65 Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Thu, 2 Feb 2023 20:40:32 +0600
Subject: [PATCH 01/26] Added NewAutoSuggestBox
---
.../AutoSuggestBox/NewAutoSuggestBox.cs | 126 ++++++++++++
.../Styles/Controls/NewAutoSuggestBox.xaml | 183 ++++++++++++++++++
src/Wpf.Ui/Styles/Wpf.Ui.xaml | 1 +
3 files changed, 310 insertions(+)
create mode 100644 src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs
create mode 100644 src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs b/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs
new file mode 100644
index 000000000..0ab28ad70
--- /dev/null
+++ b/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs
@@ -0,0 +1,126 @@
+using System.Windows;
+using System;
+using System.Diagnostics;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Input;
+
+namespace Wpf.Ui.Controls;
+
+[TemplatePart(Name = ElementTextBox, Type = typeof(System.Windows.Controls.TextBox))]
+[TemplatePart(Name = ElementSuggestionsPopup, Type = typeof(System.Windows.Controls.Primitives.Popup))]
+[TemplatePart(Name = ElementSuggestionsList, Type = typeof(System.Windows.Controls.ListView))]
+public class NewAutoSuggestBox : System.Windows.Controls.ItemsControl
+{
+ protected const string ElementTextBox = "PART_TextBox";
+ protected const string ElementSuggestionsPopup = "PART_SuggestionsPopup";
+ protected const string ElementSuggestionsList = "PART_SuggestionsList";
+
+ #region Static properties
+
+ ///
+ /// Property for .
+ ///
+ public static readonly DependencyProperty IsSuggestionListOpenProperty = DependencyProperty.Register(nameof(IsSuggestionListOpen),
+ typeof(bool), typeof(NewAutoSuggestBox),
+ new PropertyMetadata(false));
+
+ #endregion
+
+ #region Properties
+
+ ///
+ /// Gets or sets a Boolean value indicating whether the drop-down portion of the is open.
+ ///
+ public bool IsSuggestionListOpen
+ {
+ get => (bool)GetValue(IsSuggestionListOpenProperty);
+ set => SetValue(IsSuggestionListOpenProperty, value);
+ }
+
+ #endregion
+
+ protected System.Windows.Controls.TextBox TextBox = null!;
+ protected Popup SuggestionsPopup = null!;
+ protected ListView SuggestionsList = null!;
+
+ public NewAutoSuggestBox()
+ {
+ Unloaded += static (sender, _) =>
+ {
+ var self = (NewAutoSuggestBox)sender;
+
+ self.ReleaseTemplateResources();
+ };
+ }
+
+ public override void OnApplyTemplate()
+ {
+ base.OnApplyTemplate();
+
+ TextBox = GetTemplateChild(ElementTextBox);
+ SuggestionsPopup = GetTemplateChild(ElementSuggestionsPopup);
+ SuggestionsList = GetTemplateChild(ElementSuggestionsList);
+
+ TextBox.PreviewKeyDown += TextBoxOnPreviewKeyDown;
+ TextBox.TextChanged += TextBoxOnTextChanged;
+
+ SuggestionsList.SelectionChanged += SuggestionsListOnSelectionChanged;
+ SuggestionsList.PreviewKeyDown += SuggestionsListOnPreviewKeyDown;
+ SuggestionsList.LostKeyboardFocus += SuggestionsListOnLostKeyboardFocus;
+ }
+
+ protected T GetTemplateChild(string name) where T : DependencyObject
+ {
+ if (GetTemplateChild(name) is not T dependencyObject)
+ throw new ArgumentNullException(name);
+
+ return dependencyObject;
+ }
+
+ protected virtual void ReleaseTemplateResources()
+ {
+ TextBox.PreviewKeyDown -= TextBoxOnPreviewKeyDown;
+ TextBox.TextChanged -= TextBoxOnTextChanged;
+
+ SuggestionsList.SelectionChanged -= SuggestionsListOnSelectionChanged;
+ SuggestionsList.PreviewKeyDown -= SuggestionsListOnPreviewKeyDown;
+ SuggestionsList.LostKeyboardFocus -= SuggestionsListOnLostKeyboardFocus;
+ }
+
+ private void TextBoxOnPreviewKeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.Key is not Key.Down || !IsSuggestionListOpen)
+ return;
+
+ SuggestionsList.Focus();
+ }
+
+ private void SuggestionsListOnLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
+ {
+ Debug.WriteLine("Losing focus");
+
+ if (e.NewFocus is ListViewItem)
+ return;
+
+ IsSuggestionListOpen = false;
+ }
+
+ private void TextBoxOnTextChanged(object sender, TextChangedEventArgs e)
+ {
+ IsSuggestionListOpen = true;
+ }
+
+ private void SuggestionsListOnPreviewKeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.Key is not Key.Enter)
+ return;
+
+ var q = SuggestionsList.SelectedItem;
+ }
+
+ private void SuggestionsListOnSelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ Debug.WriteLine($"Selected | {e.AddedItems[0]}");
+ }
+}
diff --git a/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml b/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
new file mode 100644
index 000000000..2c857352b
--- /dev/null
+++ b/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
@@ -0,0 +1,183 @@
+
+
+ 1,1,1,0
+ 0,0,0,1
+ 10,8,0,0
+ 0,8,10,0
+ 0,5,4,0
+ 0,0,0,0
+ 24
+ 14
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Wpf.Ui/Styles/Wpf.Ui.xaml b/src/Wpf.Ui/Styles/Wpf.Ui.xaml
index d32e6a9dd..a0232522c 100644
--- a/src/Wpf.Ui/Styles/Wpf.Ui.xaml
+++ b/src/Wpf.Ui/Styles/Wpf.Ui.xaml
@@ -41,6 +41,7 @@
+
From 542f22f9097bcdd6550f9bf1442f27f6e14960d0 Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Thu, 2 Feb 2023 22:22:41 +0600
Subject: [PATCH 02/26] Added new properties
---
.../AutoSuggestBox/NewAutoSuggestBox.cs | 69 +++++++++++++++++--
.../Styles/Controls/NewAutoSuggestBox.xaml | 10 +--
2 files changed, 68 insertions(+), 11 deletions(-)
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs b/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs
index 0ab28ad70..5a483e0cb 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs
@@ -21,9 +21,27 @@ public class NewAutoSuggestBox : System.Windows.Controls.ItemsControl
///
/// Property for .
///
- public static readonly DependencyProperty IsSuggestionListOpenProperty = DependencyProperty.Register(nameof(IsSuggestionListOpen),
- typeof(bool), typeof(NewAutoSuggestBox),
- new PropertyMetadata(false));
+ public static readonly DependencyProperty IsSuggestionListOpenProperty =
+ DependencyProperty.Register(nameof(IsSuggestionListOpen), typeof(bool), typeof(NewAutoSuggestBox),
+ new PropertyMetadata(false));
+
+ ///
+ /// Property for .
+ ///
+ public static readonly DependencyProperty TextProperty = DependencyProperty.Register(nameof(Text), typeof(string), typeof(NewAutoSuggestBox),
+ new PropertyMetadata(string.Empty));
+
+ ///
+ /// Property for .
+ ///
+ public static readonly DependencyProperty PlaceholderTextProperty = DependencyProperty.Register(nameof(PlaceholderText), typeof(string), typeof(NewAutoSuggestBox),
+ new PropertyMetadata(string.Empty));
+
+ ///
+ /// Property for .
+ ///
+ public static readonly DependencyProperty MaxSuggestionListHeightProperty = DependencyProperty.Register(nameof(MaxSuggestionListHeight), typeof(double), typeof(NewAutoSuggestBox),
+ new PropertyMetadata(0d));
#endregion
@@ -38,6 +56,39 @@ public bool IsSuggestionListOpen
set => SetValue(IsSuggestionListOpenProperty, value);
}
+ ///
+ /// Gets or sets the text that is shown in the control
+ ///
+ ///
+ /// This property is not typically set in XAML.
+ ///
+ public string Text
+ {
+ get => (string)GetValue(TextProperty);
+ set => SetValue(TextProperty, value);
+ }
+
+ ///
+ /// Gets or sets the placeholder text to be displayed in the control.
+ ///
+ ///
+ /// The placeholder text to be displayed in the control. The default is an empty string.
+ ///
+ public string PlaceholderText
+ {
+ get => (string)GetValue(PlaceholderTextProperty);
+ set => SetValue(PlaceholderTextProperty, value);
+ }
+
+ ///
+ /// Gets or set the maximum height for the drop-down portion of the control.
+ ///
+ public double MaxSuggestionListHeight
+ {
+ get => (double)GetValue(MaxSuggestionListHeightProperty);
+ set => SetValue(MaxSuggestionListHeightProperty, value);
+ }
+
#endregion
protected System.Windows.Controls.TextBox TextBox = null!;
@@ -98,8 +149,6 @@ private void TextBoxOnPreviewKeyDown(object sender, KeyEventArgs e)
private void SuggestionsListOnLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
- Debug.WriteLine("Losing focus");
-
if (e.NewFocus is ListViewItem)
return;
@@ -108,6 +157,12 @@ private void SuggestionsListOnLostKeyboardFocus(object sender, KeyboardFocusChan
private void TextBoxOnTextChanged(object sender, TextChangedEventArgs e)
{
+ if (string.IsNullOrEmpty(TextBox.Text))
+ {
+ IsSuggestionListOpen = false;
+ return;
+ }
+
IsSuggestionListOpen = true;
}
@@ -116,11 +171,11 @@ private void SuggestionsListOnPreviewKeyDown(object sender, KeyEventArgs e)
if (e.Key is not Key.Enter)
return;
- var q = SuggestionsList.SelectedItem;
+ var item = SuggestionsList.SelectedItem;
}
private void SuggestionsListOnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
- Debug.WriteLine($"Selected | {e.AddedItems[0]}");
+
}
}
diff --git a/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml b/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
index 2c857352b..dfaedb771 100644
--- a/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
+++ b/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
@@ -110,6 +110,7 @@
+
@@ -126,9 +127,10 @@
-
-
-
+
Date: Fri, 3 Feb 2023 09:53:23 +0600
Subject: [PATCH 03/26] Implemented selection object from suggest list
---
.../AutoSuggestBox/NewAutoSuggestBox.cs | 48 +++++++++++++++++--
.../Styles/Controls/NewAutoSuggestBox.xaml | 29 ++---------
2 files changed, 47 insertions(+), 30 deletions(-)
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs b/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs
index 5a483e0cb..bfeaa59fb 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBox/NewAutoSuggestBox.cs
@@ -4,6 +4,7 @@
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
+using Wpf.Ui.Common;
namespace Wpf.Ui.Controls;
@@ -43,6 +44,12 @@ public class NewAutoSuggestBox : System.Windows.Controls.ItemsControl
public static readonly DependencyProperty MaxSuggestionListHeightProperty = DependencyProperty.Register(nameof(MaxSuggestionListHeight), typeof(double), typeof(NewAutoSuggestBox),
new PropertyMetadata(0d));
+ ///
+ /// Property for .
+ ///
+ public static readonly DependencyProperty IconProperty = DependencyProperty.Register(nameof(Icon), typeof(SymbolRegular), typeof(NewAutoSuggestBox),
+ new PropertyMetadata(SymbolRegular.Empty));
+
#endregion
#region Properties
@@ -89,12 +96,23 @@ public double MaxSuggestionListHeight
set => SetValue(MaxSuggestionListHeightProperty, value);
}
+ ///
+ ///
+ ///
+ public SymbolRegular Icon
+ {
+ get => (SymbolRegular)GetValue(IconProperty);
+ set => SetValue(IconProperty, value);
+ }
+
#endregion
protected System.Windows.Controls.TextBox TextBox = null!;
protected Popup SuggestionsPopup = null!;
protected ListView SuggestionsList = null!;
+ private bool _isLostFocus;
+
public NewAutoSuggestBox()
{
Unloaded += static (sender, _) =>
@@ -115,6 +133,7 @@ public override void OnApplyTemplate()
TextBox.PreviewKeyDown += TextBoxOnPreviewKeyDown;
TextBox.TextChanged += TextBoxOnTextChanged;
+ TextBox.LostKeyboardFocus += TextBoxOnLostKeyboardFocus;
SuggestionsList.SelectionChanged += SuggestionsListOnSelectionChanged;
SuggestionsList.PreviewKeyDown += SuggestionsListOnPreviewKeyDown;
@@ -133,6 +152,7 @@ protected virtual void ReleaseTemplateResources()
{
TextBox.PreviewKeyDown -= TextBoxOnPreviewKeyDown;
TextBox.TextChanged -= TextBoxOnTextChanged;
+ TextBox.LostKeyboardFocus -= TextBoxOnLostKeyboardFocus;
SuggestionsList.SelectionChanged -= SuggestionsListOnSelectionChanged;
SuggestionsList.PreviewKeyDown -= SuggestionsListOnPreviewKeyDown;
@@ -147,12 +167,13 @@ private void TextBoxOnPreviewKeyDown(object sender, KeyEventArgs e)
SuggestionsList.Focus();
}
- private void SuggestionsListOnLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
+ private void TextBoxOnLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
- if (e.NewFocus is ListViewItem)
+ if (e.NewFocus is ListView)
return;
IsSuggestionListOpen = false;
+ _isLostFocus = true;
}
private void TextBoxOnTextChanged(object sender, TextChangedEventArgs e)
@@ -166,16 +187,35 @@ private void TextBoxOnTextChanged(object sender, TextChangedEventArgs e)
IsSuggestionListOpen = true;
}
+ private void SuggestionsListOnLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
+ {
+ if (e.NewFocus is ListViewItem)
+ return;
+
+ IsSuggestionListOpen = false;
+ }
+
private void SuggestionsListOnPreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key is not Key.Enter)
return;
- var item = SuggestionsList.SelectedItem;
+ OnSelected(SuggestionsList.SelectedItem);
}
private void SuggestionsListOnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
-
+ if (!_isLostFocus)
+ return;
+
+ OnSelected(e.AddedItems[0]);
+ }
+
+ protected virtual void OnSelected(object selectedObj)
+ {
+ Debug.WriteLine($"Selected element is {selectedObj}");
+
+ _isLostFocus = false;
+ IsSuggestionListOpen = false;
}
}
diff --git a/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml b/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
index dfaedb771..e47783562 100644
--- a/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
+++ b/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
@@ -84,32 +84,6 @@
-
-
-
-
-
-
diff --git a/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml b/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
index c5d5dfbdf..30750c3e8 100644
--- a/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
+++ b/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
@@ -83,7 +83,7 @@
-
-
+
\ No newline at end of file
diff --git a/src/Wpf.Ui/Styles/Wpf.Ui.xaml b/src/Wpf.Ui/Styles/Wpf.Ui.xaml
index a0232522c..a8c8390e3 100644
--- a/src/Wpf.Ui/Styles/Wpf.Ui.xaml
+++ b/src/Wpf.Ui/Styles/Wpf.Ui.xaml
@@ -40,7 +40,6 @@
-
diff --git a/src/Wpf.Ui/Wpf.Ui.csproj b/src/Wpf.Ui/Wpf.Ui.csproj
index 385ce3c3e..9b9c5f75d 100644
--- a/src/Wpf.Ui/Wpf.Ui.csproj
+++ b/src/Wpf.Ui/Wpf.Ui.csproj
@@ -96,7 +96,7 @@
-
+
From 63ac0006376b6b1a6d108975dd3cdc9df84d938a Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Sat, 4 Feb 2023 11:26:07 +0600
Subject: [PATCH 18/26] Renamed style
---
.../Controls/{NewAutoSuggestBox.xaml => AutoSuggestBox.xaml} | 4 ++--
src/Wpf.Ui/Styles/Wpf.Ui.xaml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
rename src/Wpf.Ui/Styles/Controls/{NewAutoSuggestBox.xaml => AutoSuggestBox.xaml} (97%)
diff --git a/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml b/src/Wpf.Ui/Styles/Controls/AutoSuggestBox.xaml
similarity index 97%
rename from src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
rename to src/Wpf.Ui/Styles/Controls/AutoSuggestBox.xaml
index 30750c3e8..8632791a5 100644
--- a/src/Wpf.Ui/Styles/Controls/NewAutoSuggestBox.xaml
+++ b/src/Wpf.Ui/Styles/Controls/AutoSuggestBox.xaml
@@ -83,7 +83,7 @@
-
-
+
\ No newline at end of file
diff --git a/src/Wpf.Ui/Styles/Wpf.Ui.xaml b/src/Wpf.Ui/Styles/Wpf.Ui.xaml
index a8c8390e3..d32e6a9dd 100644
--- a/src/Wpf.Ui/Styles/Wpf.Ui.xaml
+++ b/src/Wpf.Ui/Styles/Wpf.Ui.xaml
@@ -40,7 +40,7 @@
-
+
From 9e4be77d56e8307c5c2fd7c8e7523986c51da89b Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Sat, 4 Feb 2023 11:51:19 +0600
Subject: [PATCH 19/26] Implemented closing AutoSuggestBox with escape key
---
src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs b/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
index 0b0184bec..b05698fd8 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
@@ -345,6 +345,12 @@ protected virtual void OnSuggestionsPopupClosed()
private void TextBoxOnPreviewKeyDown(object sender, KeyEventArgs e)
{
+ if (e.Key is Key.Escape)
+ {
+ IsSuggestionListOpen = false;
+ return;
+ }
+
if (e.Key is Key.Enter)
{
IsSuggestionListOpen = false;
From 6cce8d6a878cca72af8504e12ad550a64ed0c921 Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Sat, 4 Feb 2023 12:55:11 +0600
Subject: [PATCH 20/26] Deleted SuggestionsPopupClosed event
---
.../Controls/AutoSuggestBox/AutoSuggestBox.cs | 42 ++++++++-----------
.../Navigation/NavigationView.Base.cs | 21 ++++------
2 files changed, 25 insertions(+), 38 deletions(-)
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs b/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
index b05698fd8..1dec77229 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
@@ -171,12 +171,6 @@ public SymbolRegular Icon
public static readonly RoutedEvent TextChangedEvent = EventManager.RegisterRoutedEvent(
nameof(TextChanged), RoutingStrategy.Bubble, typeof(TypedEventHandler), typeof(AutoSuggestBox));
- ///
- /// Routed event for .
- ///
- public static readonly RoutedEvent SuggestionsPopupClosedEvent = EventManager.RegisterRoutedEvent(
- nameof(SuggestionsPopupClosed), RoutingStrategy.Bubble, typeof(TypedEventHandler), typeof(AutoSuggestBox));
-
///
/// Occurs when the user submits a search query.
///
@@ -204,15 +198,6 @@ public event TypedEventHandler RemoveHandler(TextChangedEvent, value);
}
- ///
- /// Raised after the popup is closed.
- ///
- public event TypedEventHandler SuggestionsPopupClosed
- {
- add => AddHandler(SuggestionsPopupClosedEvent, value);
- remove => RemoveHandler(SuggestionsPopupClosedEvent, value);
- }
-
#endregion
protected TextBox TextBox = null!;
@@ -222,6 +207,8 @@ public event TypedEventHandler SuggestionsPopup
private bool _isTextBoxLostFocus;
private bool _changingTextAfterSuggestionChosen;
private bool _isUserChangedText;
+
+ private object? _selectedItem;
public AutoSuggestBox()
{
@@ -245,7 +232,7 @@ public override void OnApplyTemplate()
TextBox.TextChanged += TextBoxOnTextChanged;
TextBox.LostKeyboardFocus += TextBoxOnLostKeyboardFocus;
- SuggestionsPopup.Closed += (_, _) => OnSuggestionsPopupClosed();
+ SuggestionsPopup.Closed += SuggestionsPopupOnClosed;
SuggestionsList.SelectionChanged += SuggestionsListOnSelectionChanged;
SuggestionsList.PreviewKeyDown += SuggestionsListOnPreviewKeyDown;
@@ -270,6 +257,8 @@ protected virtual void ReleaseTemplateResources()
TextBox.TextChanged -= TextBoxOnTextChanged;
TextBox.LostKeyboardFocus -= TextBoxOnLostKeyboardFocus;
+ SuggestionsPopup.Closed -= SuggestionsPopupOnClosed;
+
SuggestionsList.SelectionChanged -= SuggestionsListOnSelectionChanged;
SuggestionsList.PreviewKeyDown -= SuggestionsListOnPreviewKeyDown;
SuggestionsList.LostKeyboardFocus -= SuggestionsListOnLostKeyboardFocus;
@@ -331,14 +320,6 @@ protected virtual void OnTextChanged(AutoSuggestionBoxTextChangeReason reason, s
DefaultFiltering(text);
}
- ///
- ///
- ///
- protected virtual void OnSuggestionsPopupClosed()
- {
- RaiseEvent(new RoutedEventArgs(SuggestionsPopupClosedEvent, this));
- }
-
#endregion
#region TextBox events
@@ -439,6 +420,18 @@ private void SuggestionsListOnSelectionChanged(object sender, SelectionChangedEv
#endregion
+ #region SuggestionsPopup events
+
+ private void SuggestionsPopupOnClosed(object? sender, EventArgs e)
+ {
+ if (_selectedItem is null)
+ return;
+
+ OnSuggestionChosen(_selectedItem);
+ }
+
+ #endregion
+
private IntPtr Hook(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam, ref bool handled)
{
if (!IsSuggestionListOpen)
@@ -456,6 +449,7 @@ private void OnSelectedChanged(object selectedObj)
{
OnSuggestionChosen(selectedObj);
+ _selectedItem = selectedObj;
_isTextBoxLostFocus = false;
}
diff --git a/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs b/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs
index 62fae38f2..98e272bcf 100644
--- a/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs
+++ b/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs
@@ -75,7 +75,6 @@ protected override void OnInitialized(EventArgs e)
{
AutoSuggestBox.OriginalItemsSource = _autoSuggestBoxItems;
AutoSuggestBox.SuggestionChosen += AutoSuggestBoxOnSuggestionChosen;
- AutoSuggestBox.SuggestionsPopupClosed += AutoSuggestBoxOnSuggestionsPopupClosed;
AutoSuggestBox.QuerySubmitted += AutoSuggestBoxOnQuerySubmitted;
}
@@ -114,7 +113,6 @@ protected virtual void OnUnloaded(object sender, RoutedEventArgs e)
if (AutoSuggestBox is not null)
{
AutoSuggestBox.SuggestionChosen -= AutoSuggestBoxOnSuggestionChosen;
- AutoSuggestBox.SuggestionsPopupClosed -= AutoSuggestBoxOnSuggestionsPopupClosed;
AutoSuggestBox.QuerySubmitted -= AutoSuggestBoxOnQuerySubmitted;
}
@@ -199,26 +197,21 @@ private void UpdateAutoSuggestBoxSuggestions()
AddItemsToAutoSuggestBoxItems();
}
- private void AutoSuggestBoxOnSuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)
- {
- if (args.SelectedItem is not string selectedSuggestBoxItem)
- return;
-
- _selectedAutoSuggestBoxItem = selectedSuggestBoxItem;
- }
-
///
/// Navigate to the page after its name is selected in .
///
- private void AutoSuggestBoxOnSuggestionsPopupClosed(AutoSuggestBox sender, RoutedEventArgs args)
+ private void AutoSuggestBoxOnSuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)
{
- if (string.IsNullOrEmpty(_selectedAutoSuggestBoxItem))
+ if (sender.IsSuggestionListOpen)
+ return;
+
+ if (args.SelectedItem is not string selectedSuggestBoxItem)
return;
- if (NavigateToMenuItemFromAutoSuggestBox(MenuItems, _selectedAutoSuggestBoxItem))
+ if (NavigateToMenuItemFromAutoSuggestBox(MenuItems, selectedSuggestBoxItem))
return;
- NavigateToMenuItemFromAutoSuggestBox(FooterMenuItems, _selectedAutoSuggestBoxItem);
+ NavigateToMenuItemFromAutoSuggestBox(FooterMenuItems, selectedSuggestBoxItem);
}
private void AutoSuggestBoxOnQuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
From a2a6f70932e958567c77974efd5d2cddd06b0a7c Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Sat, 4 Feb 2023 13:45:19 +0600
Subject: [PATCH 21/26] Update AutoSuggestBox.cs
---
.../Controls/AutoSuggestBox/AutoSuggestBox.cs | 19 +++----------------
1 file changed, 3 insertions(+), 16 deletions(-)
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs b/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
index 1dec77229..4b26533b7 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
@@ -232,8 +232,6 @@ public override void OnApplyTemplate()
TextBox.TextChanged += TextBoxOnTextChanged;
TextBox.LostKeyboardFocus += TextBoxOnLostKeyboardFocus;
- SuggestionsPopup.Closed += SuggestionsPopupOnClosed;
-
SuggestionsList.SelectionChanged += SuggestionsListOnSelectionChanged;
SuggestionsList.PreviewKeyDown += SuggestionsListOnPreviewKeyDown;
SuggestionsList.LostKeyboardFocus += SuggestionsListOnLostKeyboardFocus;
@@ -257,8 +255,6 @@ protected virtual void ReleaseTemplateResources()
TextBox.TextChanged -= TextBoxOnTextChanged;
TextBox.LostKeyboardFocus -= TextBoxOnLostKeyboardFocus;
- SuggestionsPopup.Closed -= SuggestionsPopupOnClosed;
-
SuggestionsList.SelectionChanged -= SuggestionsListOnSelectionChanged;
SuggestionsList.PreviewKeyDown -= SuggestionsListOnPreviewKeyDown;
SuggestionsList.LostKeyboardFocus -= SuggestionsListOnLostKeyboardFocus;
@@ -408,6 +404,9 @@ private void SuggestionsListOnPreviewMouseLeftButtonUp(object sender, MouseButto
return;
IsSuggestionListOpen = false;
+
+ if (_selectedItem is not null)
+ OnSuggestionChosen(_selectedItem);
}
private void SuggestionsListOnSelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -420,18 +419,6 @@ private void SuggestionsListOnSelectionChanged(object sender, SelectionChangedEv
#endregion
- #region SuggestionsPopup events
-
- private void SuggestionsPopupOnClosed(object? sender, EventArgs e)
- {
- if (_selectedItem is null)
- return;
-
- OnSuggestionChosen(_selectedItem);
- }
-
- #endregion
-
private IntPtr Hook(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam, ref bool handled)
{
if (!IsSuggestionListOpen)
From 5f6b37d01f4db7c8fcdacac365cc800e913484f1 Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Sun, 5 Feb 2023 20:28:40 +0600
Subject: [PATCH 22/26] Fixed bug
---
.../Controls/AutoSuggestBox/AutoSuggestBox.cs | 18 ++++--------------
.../AutoSuggestionBoxTextChangeReason.cs | 3 +++
.../Controls/Navigation/NavigationView.Base.cs | 2 --
3 files changed, 7 insertions(+), 16 deletions(-)
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs b/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
index 4b26533b7..7db8ed632 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBox.cs
@@ -204,9 +204,8 @@ public event TypedEventHandler
+/// Provides data for the event.
+///
public enum AutoSuggestionBoxTextChangeReason
{
///
diff --git a/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs b/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs
index 98e272bcf..aa60d8a06 100644
--- a/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs
+++ b/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs
@@ -31,8 +31,6 @@ public partial class NavigationView : System.Windows.Controls.Control, INavigati
private readonly ObservableCollection _autoSuggestBoxItems = new();
private readonly ObservableCollection _breadcrumbBarItems = new();
- private string _selectedAutoSuggestBoxItem = string.Empty;
-
protected Dictionary PageIdOrTargetTagNavigationViewsDictionary = new();
protected Dictionary PageTypeNavigationViewsDictionary = new();
From 49bb5bfe06cc547d2287b81fcfeeb17ca932d273 Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Sun, 5 Feb 2023 20:44:09 +0600
Subject: [PATCH 23/26] Changed namespace
---
.../Views/Pages/Text/AutoSuggestBoxPage.xaml | 5 +++--
.../Views/Pages/Text/AutoSuggestBoxPage.xaml.cs | 2 +-
.../AutoSuggestBox.bmp | Bin
.../AutoSuggestBox.cs | 14 +++++++-------
.../AutoSuggestBoxQuerySubmittedEventArgs.cs | 2 +-
.../AutoSuggestBoxSuggestionChosenEventArgs.cs | 2 +-
.../AutoSuggestBoxTextChangedEventArgs.cs | 2 +-
.../AutoSuggestionBoxTextChangeReason.cs | 2 +-
src/Wpf.Ui/Controls/Navigation/INavigationView.cs | 1 +
.../Controls/Navigation/NavigationView.Base.cs | 1 +
.../Navigation/NavigationView.Properties.cs | 1 +
src/Wpf.Ui/Properties/AssemblyInfo.cs | 1 +
src/Wpf.Ui/Styles/Controls/AutoSuggestBox.xaml | 7 ++++---
src/Wpf.Ui/Wpf.Ui.csproj | 2 +-
14 files changed, 24 insertions(+), 18 deletions(-)
rename src/Wpf.Ui/Controls/{AutoSuggestBox => AutoSuggestBoxControl}/AutoSuggestBox.bmp (100%)
rename src/Wpf.Ui/Controls/{AutoSuggestBox => AutoSuggestBoxControl}/AutoSuggestBox.cs (99%)
rename src/Wpf.Ui/Controls/{AutoSuggestBox => AutoSuggestBoxControl}/AutoSuggestBoxQuerySubmittedEventArgs.cs (93%)
rename src/Wpf.Ui/Controls/{AutoSuggestBox => AutoSuggestBoxControl}/AutoSuggestBoxSuggestionChosenEventArgs.cs (93%)
rename src/Wpf.Ui/Controls/{AutoSuggestBox => AutoSuggestBoxControl}/AutoSuggestBoxTextChangedEventArgs.cs (93%)
rename src/Wpf.Ui/Controls/{AutoSuggestBox => AutoSuggestBoxControl}/AutoSuggestionBoxTextChangeReason.cs (93%)
diff --git a/src/Wpf.Ui.Gallery/Views/Pages/Text/AutoSuggestBoxPage.xaml b/src/Wpf.Ui.Gallery/Views/Pages/Text/AutoSuggestBoxPage.xaml
index 9aea4aac5..94c89335c 100644
--- a/src/Wpf.Ui.Gallery/Views/Pages/Text/AutoSuggestBoxPage.xaml
+++ b/src/Wpf.Ui.Gallery/Views/Pages/Text/AutoSuggestBoxPage.xaml
@@ -7,9 +7,10 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:system="clr-namespace:System;assembly=System.Runtime"
xmlns:text="clr-namespace:Wpf.Ui.Gallery.ViewModels.Pages.Text"
+ xmlns:text1="clr-namespace:Wpf.Ui.Gallery.Views.Pages.Text"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
Title="AutoSuggestBoxPage"
- d:DataContext="{d:DesignInstance text:AutoSuggestBoxViewModel,
+ d:DataContext="{d:DesignInstance text1:AutoSuggestBoxPage,
IsDesignTimeCreatable=False}"
d:DesignHeight="450"
d:DesignWidth="800"
@@ -46,7 +47,7 @@
CodeText="<ui:AutoSuggestBox PlaceholderText="Search..." />"
HeaderText="WPF UI AutoSuggestBox.">
-
+
diff --git a/src/Wpf.Ui.Gallery/Views/Pages/Text/AutoSuggestBoxPage.xaml.cs b/src/Wpf.Ui.Gallery/Views/Pages/Text/AutoSuggestBoxPage.xaml.cs
index 88a5320d5..36a12c926 100644
--- a/src/Wpf.Ui.Gallery/Views/Pages/Text/AutoSuggestBoxPage.xaml.cs
+++ b/src/Wpf.Ui.Gallery/Views/Pages/Text/AutoSuggestBoxPage.xaml.cs
@@ -15,7 +15,7 @@ public partial class AutoSuggestBoxPage : INavigableView
/// Provides event data for the event.
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBoxSuggestionChosenEventArgs.cs b/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBoxSuggestionChosenEventArgs.cs
similarity index 93%
rename from src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBoxSuggestionChosenEventArgs.cs
rename to src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBoxSuggestionChosenEventArgs.cs
index f539d2b9f..dc42443e8 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBoxSuggestionChosenEventArgs.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBoxSuggestionChosenEventArgs.cs
@@ -5,7 +5,7 @@
using System.Windows;
-namespace Wpf.Ui.Controls;
+namespace Wpf.Ui.Controls.AutoSuggestBoxControl;
///
/// Provides data for the event.
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBoxTextChangedEventArgs.cs b/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBoxTextChangedEventArgs.cs
similarity index 93%
rename from src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBoxTextChangedEventArgs.cs
rename to src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBoxTextChangedEventArgs.cs
index 2977f1fe9..437ee42a6 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestBoxTextChangedEventArgs.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBoxTextChangedEventArgs.cs
@@ -5,7 +5,7 @@
using System.Windows;
-namespace Wpf.Ui.Controls;
+namespace Wpf.Ui.Controls.AutoSuggestBoxControl;
///
/// Provides data for the event.
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestionBoxTextChangeReason.cs b/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestionBoxTextChangeReason.cs
similarity index 93%
rename from src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestionBoxTextChangeReason.cs
rename to src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestionBoxTextChangeReason.cs
index afb0e6c66..772a32653 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBox/AutoSuggestionBoxTextChangeReason.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestionBoxTextChangeReason.cs
@@ -3,7 +3,7 @@
// Copyright (C) Leszek Pomianowski and WPF UI Contributors.
// All Rights Reserved.
-namespace Wpf.Ui.Controls;
+namespace Wpf.Ui.Controls.AutoSuggestBoxControl;
///
/// Provides data for the event.
diff --git a/src/Wpf.Ui/Controls/Navigation/INavigationView.cs b/src/Wpf.Ui/Controls/Navigation/INavigationView.cs
index f1eea75ce..dd60f8636 100644
--- a/src/Wpf.Ui/Controls/Navigation/INavigationView.cs
+++ b/src/Wpf.Ui/Controls/Navigation/INavigationView.cs
@@ -13,6 +13,7 @@
using Wpf.Ui.Animations;
using Wpf.Ui.Common;
using Wpf.Ui.Contracts;
+using Wpf.Ui.Controls.AutoSuggestBoxControl;
namespace Wpf.Ui.Controls.Navigation;
diff --git a/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs b/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs
index aa60d8a06..4acc33576 100644
--- a/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs
+++ b/src/Wpf.Ui/Controls/Navigation/NavigationView.Base.cs
@@ -16,6 +16,7 @@
using System.Linq;
using System.Windows;
using Wpf.Ui.Common;
+using Wpf.Ui.Controls.AutoSuggestBoxControl;
namespace Wpf.Ui.Controls.Navigation;
diff --git a/src/Wpf.Ui/Controls/Navigation/NavigationView.Properties.cs b/src/Wpf.Ui/Controls/Navigation/NavigationView.Properties.cs
index 007a06bea..b18f64124 100644
--- a/src/Wpf.Ui/Controls/Navigation/NavigationView.Properties.cs
+++ b/src/Wpf.Ui/Controls/Navigation/NavigationView.Properties.cs
@@ -12,6 +12,7 @@
using System.Windows;
using System.Windows.Controls;
using Wpf.Ui.Animations;
+using Wpf.Ui.Controls.AutoSuggestBoxControl;
namespace Wpf.Ui.Controls.Navigation;
diff --git a/src/Wpf.Ui/Properties/AssemblyInfo.cs b/src/Wpf.Ui/Properties/AssemblyInfo.cs
index ca9e3900c..8e0d41e4f 100644
--- a/src/Wpf.Ui/Properties/AssemblyInfo.cs
+++ b/src/Wpf.Ui/Properties/AssemblyInfo.cs
@@ -18,3 +18,4 @@
[assembly: XmlnsDefinition("http://schemas.lepo.co/wpfui/2022/xaml", "Wpf.Ui.Converters")]
[assembly: XmlnsDefinition("http://schemas.lepo.co/wpfui/2022/xaml", "Wpf.Ui.Controls.Navigation")]
[assembly: XmlnsDefinition("http://schemas.lepo.co/wpfui/2022/xaml", "Wpf.Ui.Controls.Window")]
+[assembly: XmlnsDefinition("http://schemas.lepo.co/wpfui/2022/xaml", "Wpf.Ui.Controls.AutoSuggestBoxControl")]
diff --git a/src/Wpf.Ui/Styles/Controls/AutoSuggestBox.xaml b/src/Wpf.Ui/Styles/Controls/AutoSuggestBox.xaml
index 8632791a5..055695314 100644
--- a/src/Wpf.Ui/Styles/Controls/AutoSuggestBox.xaml
+++ b/src/Wpf.Ui/Styles/Controls/AutoSuggestBox.xaml
@@ -1,6 +1,7 @@
@@ -83,7 +84,7 @@
-
-
+
\ No newline at end of file
diff --git a/src/Wpf.Ui/Wpf.Ui.csproj b/src/Wpf.Ui/Wpf.Ui.csproj
index 9b9c5f75d..b308395e2 100644
--- a/src/Wpf.Ui/Wpf.Ui.csproj
+++ b/src/Wpf.Ui/Wpf.Ui.csproj
@@ -96,7 +96,7 @@
-
+
From b311314bd6feaae4c8d6bece55c780196f0e7a2c Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Sun, 5 Feb 2023 22:15:41 +0600
Subject: [PATCH 24/26] Update VisualStudioToolsManifest.xml
---
src/Wpf.Ui/VisualStudioToolsManifest.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Wpf.Ui/VisualStudioToolsManifest.xml b/src/Wpf.Ui/VisualStudioToolsManifest.xml
index b199f28ca..27a18002c 100644
--- a/src/Wpf.Ui/VisualStudioToolsManifest.xml
+++ b/src/Wpf.Ui/VisualStudioToolsManifest.xml
@@ -3,7 +3,7 @@
-
+
From bb958799c18a08be0e8f34fda9cf7af00f26da33 Mon Sep 17 00:00:00 2001
From: Ivan Dmitriev <42055372+IvanDmitriev1@users.noreply.github.com>
Date: Mon, 6 Feb 2023 15:14:39 +0600
Subject: [PATCH 25/26] Added keyboard shortcut for AutoSuggestBox
---
.../Views/Windows/MainWindow.xaml | 13 +++++++++++-
.../AutoSuggestBoxControl/AutoSuggestBox.cs | 20 +++++++++++++++++++
2 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/src/Wpf.Ui.Gallery/Views/Windows/MainWindow.xaml b/src/Wpf.Ui.Gallery/Views/Windows/MainWindow.xaml
index 830618f42..2a8300328 100644
--- a/src/Wpf.Ui.Gallery/Views/Windows/MainWindow.xaml
+++ b/src/Wpf.Ui.Gallery/Views/Windows/MainWindow.xaml
@@ -20,6 +20,14 @@
WindowCornerPreference="Default"
WindowStartupLocation="CenterScreen"
mc:Ignorable="d">
+
+
+
+
+
@@ -39,7 +47,10 @@
-
+
diff --git a/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBox.cs b/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBox.cs
index e20123d5d..6a48856ec 100644
--- a/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBox.cs
+++ b/src/Wpf.Ui/Controls/AutoSuggestBoxControl/AutoSuggestBox.cs
@@ -76,6 +76,13 @@ public class AutoSuggestBox : System.Windows.Controls.ItemsControl
public static readonly DependencyProperty IconProperty = DependencyProperty.Register(nameof(Icon), typeof(SymbolRegular), typeof(AutoSuggestBox),
new PropertyMetadata(SymbolRegular.Empty));
+ ///
+ /// Property for .
+ ///
+ public static readonly DependencyProperty FocusCommandProperty =
+ DependencyProperty.Register(nameof(FocusCommand), typeof(ICommand), typeof(AutoSuggestBox),
+ new PropertyMetadata(null));
+
#endregion
#region Properties
@@ -149,6 +156,11 @@ public SymbolRegular Icon
set => SetValue(IconProperty, value);
}
+ ///
+ /// Used for focusing control
+ ///
+ public ICommand FocusCommand => (ICommand)GetValue(FocusCommandProperty);
+
#endregion
#region Events
@@ -217,6 +229,8 @@ public AutoSuggestBox()
self.ReleaseTemplateResources();
};
+
+ SetValue(FocusCommandProperty, new RelayCommand