我想在新的Windows Phone 8.1 AutoCompleteBox Control的TextChange事件上调用一个命令。我正在使用MVVM Light。
答案 0 :(得分:18)
在新的Windows应用商店8.1应用中,有一个新的SDK Behavior SDK用于在应用中添加行为。默认情况下不添加它您必须在项目中添加此扩展。以下是如何在项目中添加此扩展程序。
从列表中安装Behavior SDK。
现在,在您的XAML页面中,将以下命名空间添加到能够在ViewModel上调用ICommand的InvokeActionCommand
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
DataContext="{Binding AutoSuggestionBoxExample, Mode=OneWay, Source={StaticResource Locator}}"
...
这是用于在autocompletebox的textchange事件上调用命令的代码XAML代码。
<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>
以下是我在ViewModel中的RelayCommand
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;
}));
}
}
希望这有助于细节,请参阅以下链接。 Windows 8.1 Behavior SDK: How to use InvokeAction
答案 1 :(得分:5)
标记的答案肯定是正确的,它帮助我发现了行为SDK;但是,Behavior SDK似乎已经在VS 2015 CTP中本地安装,而不是作为扩展。此外,要使Universal应用程序使用Behavior SDK,您必须:
您必须定义的XAML名称空间仍然相同:
<UserControl ...
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
...>