Я хочу вызвать команду в событии TextChange для нового телефона Windows 8.1 AutoCompleteBox Control. Я использую MVVM Light.
Как добавить Command Behavior в хранилище Windows 8.1 Приложение MVVM
Ответ 1
В новых приложениях для Windows 8.1 есть новый SDK Behavior SDK для добавления поведения в приложение. он не добавляется по умолчанию, вам нужно добавить это расширение в свой проект. ниже описано, как добавить это расширение в свой проект.
установите SDK Behavior из списка.
Теперь на странице XAML добавьте следующие пространства имен в InvokeActionCommand, способные вызывать ICommand в ViewModel
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
DataContext="{Binding AutoSuggestionBoxExample, Mode=OneWay, Source={StaticResource Locator}}"
...
вот код кода XAML для вызова команды на событие textchange в автозаполнении.
<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>
Ниже приведена моя RelayCommand в 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;
}));
}
}
Надеемся, что это поможет подробнее узнать следующую ссылку. Windows 8.1 Поведение SDK: использование InvokeAction
Ответ 2
Отмеченный ответ, безусловно, правильный, и он помог мне открыть SDK Behavior; однако SDK поведения, по-видимому, уже установлен изначально в VS 2015 CTP, а не в качестве расширения. Кроме того, для универсального приложения для использования SDK поведения вам необходимо:
- Щелкните правой кнопкой мыши проект Ссылки и выберите Добавить ссылку.... Откроется диалоговое окно Справочный менеджер.
- Перейдите на вкладку Windows Phone 8.1 или вкладку Windows 8.1 слева, в зависимости от того, какой тип проекта вы обновляете.
- Выберите вкладку Расширения.
- Справа выберите Поведение SDK (XAML).
- В решении для универсального проекта проект Shared может использовать SDK Behavior так же, как и любой другой проект; однако в нем нет папки Ссылки, поэтому вы должны просто добавить ссылку на все целевые проекты платформы, используя предыдущие шаги; например, ваши проекты .Windows и .WindowsPhone.
Пространства имен XAML, которые вы должны определить, все те же:
<UserControl ...
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
...>