Prevent AutoCompleteBox getting stuck in a state where it can't drop down. #17074
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does the pull request do?
AutoCompleteBox
sometimes can get stuck in a state where it can't get dropped down. A customer reported this, giving the use case where they setIsDropDownOpen
(via a binding) before they setItemsSource
(also via a binding).This happens because
AutoCompleteBox.RefeshView
has two state flags:_filterInAction
and_cancelRequested
. Usually these are reset when the method exits but in the case where there are no items, the method exits early leaving_filterInAction
set to true.Wrap the whole thing in a
try
...finally
block to make sure the flags are always reset when the method exits, even if there are exceptions etc.Note: the diff is best viewed using the
Hide whitespace
option on GitHub as the whole block has changed indentation.