I want to invoke a command on TextChange event of new windows phone 8.1 AutoCompleteBox Control. I am using MVVM Light.
In new windows store 8.1 apps there is a new SDK Behavior SDK for adding behaviors in the application. it is not added by default you have to add this Extension in your project. below is how to add this extension in your project.
install the Behavior SDK from the list.
Now in your XAML page add following namespaces to InvokeActionCommand that is capable of invoking ICommand on ViewModel
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
DataContext="{Binding AutoSuggestionBoxExample, Mode=OneWay, Source={StaticResource Locator}}"
...
here is the code XAML code for invoking command on textchange event of the autocompletebox.
<AutoSuggestBox Text="{Binding SearchText,Mode=TwoWay}" ItemsSource="{Binding
Suggesstions}">
<AutoSuggestBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</AutoSuggestBox.ItemTemplate>
<i:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="TextChanged">
<core:InvokeCommandAction Command="{Binding SearchChanged}">
</core:InvokeCommandAction>
</core:EventTriggerBehavior>
</i:Interaction.Behaviors>
</AutoSuggestBox>
Following is my RelayCommand in ViewModel
private RelayCommand _searchChanged;
/// <summary>
/// Gets the SearchChanged.
/// </summary>
public RelayCommand SearchChanged
{
get
{
return _searchChanged
?? (_searchChanged = new RelayCommand(
() =>
{
IList<string> sugg = new List<string>();
for (int i = 0; i < 25; i++)
{
sugg.Add(SearchText + " 1" + i);
sugg.Add(SearchText + " 2" + i);
}
Suggesstions = sugg;
}));
}
}
Hope this helps for detail see the following link. Windows 8.1 Behavior SDK: How to use InvokeAction
The marked answer is certainly correct and it helped me to discover the Behavior SDK; however, the Behavior SDK seems to already be installed natively in VS 2015 CTP, rather than being an extension. Furthermore, for a Universal app to use the Behavior SDK you must:
The XAML namespaces that you must define are still the same:
<UserControl ...
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
...>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With