Как добавить Command Behavior в хранилище Windows 8.1 Приложение MVVM

Я хочу вызвать команду в событии TextChange для нового телефона Windows 8.1 AutoCompleteBox Control. Я использую MVVM Light.

Ответ 1

В новых приложениях для Windows 8.1 есть новый SDK Behavior SDK для добавления поведения в приложение. он не добавляется по умолчанию, вам нужно добавить это расширение в свой проект. ниже описано, как добавить это расширение в свой проект.

enter image description here

установите SDK Behavior из списка. enter image description here

Теперь на странице 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"
             ...>