Я вызываю команды QuerySubmited и OfferionChosen элемента управления AutoSuggestBox в WinUi 3. Команды привязываются к ICommand в модели представления.
<AutoSuggestBox x:Name = "Control2" PlaceholderText = "Type a control name"
TextChanged = "SearchBox_TextChanged" QueryIcon = "Find" QuerySubmitted = "SearchBox_QuerySubmitted"
SuggestionChosen = "SearchBox_SuggestionChosen" Width = "300" HorizontalAlignment = "Left"/>
следующий код необходимо преобразовать в DelegateCommand в модели представления.
public void SearchBox_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
{
if (args.ChosenSuggestion != null )
{
}
else if (!string.IsNullOrEmpty(args.QueryText))
{
}
}
Вот вопрос, как это сделать в UWP. Привязка UWP к AutoSuggestBox в MVVM
Но вопросу и главному ответу уже 8 лет, есть ли новый (лучший) способ реализовать это в WinUi 3? Спасибо.





Сначала установите следующий пакет nuget
https://www.nuget.org/packages/Microsoft.Xaml.Behaviors.WinUI.Managed
тогда вы можете использовать Interaction и связать свой метод (из модели представления) в своем xaml
<AutoSuggestBox x:Name = "Control2" PlaceholderText = "Type a control name"
TextChanged = "SearchBox_TextChanged" QueryIcon = "Find" Width = "300" HorizontalAlignment = "Left">
<i:Interaction.Behaviors>
<ic:EventTriggerBehavior EventName = "QuerySubmitted">
<ic:EventTriggerBehavior.Actions>
<ic:InvokeCommandAction Command = "{x:Bind ViewModel.SearchBox_QuerySubmitted}" />
</ic:EventTriggerBehavior.Actions>
</ic:EventTriggerBehavior>
<ic:EventTriggerBehavior EventName = "SuggestionChosen">
<ic:EventTriggerBehavior.Actions>
<ic:InvokeCommandAction Command = "{x:Bind ViewModel.SearchBox_SuggestionChosen}" />
</ic:EventTriggerBehavior.Actions>
</ic:EventTriggerBehavior>
</i:Interaction.Behaviors>
</AutoSuggestBox>
и csharp:
public void SearchBox_QuerySubmitted(AutoSuggestBoxQuerySubmittedEventArgs args)
{
}
public void SearchBox_SuggestionChosen(AutoSuggestBoxSuggestionChosenEventArgs args)
{
}