Проблема KeyDown с Silverlight и MVVM - PullRequest
       7

Проблема KeyDown с Silverlight и MVVM

0 голосов
/ 13 августа 2010

Прежде всего, я новичок в мире Silverlight + MVVM. Поэтому я постараюсь объяснить вам сценарий, ребята.

В моем приложении Silverlight 4 есть следующий AutoCompleteBox, который отлично работает.

<myControls:AutoCompleteBox Name="acbVendorID" MinimumPrefixLength="2"
      ItemsSource="{Binding VendorCodes, Mode=TwoWay}"
      SelectedItem="{Binding SelectedVendorCode, Mode=TwoWay}"
      ValueMemberBinding="{Binding Value}"
      cmds:AutoCompletePopulating.Command="{Binding VendorID_Populating}"
      cmds:AutoCompletePopulating.CommandParameter="{Binding ElementName=acbVendorID}">

Теперь мое требование следующее:

Когда я выбираю конкретный VendorId из AutoCompleteBox, остальные данные Vendor должны загружаться в виде сетки. По этой причине я реализовал SelectedVendorCode в моей ViewModel следующим образом:

private KeyValue selectedVendorCode;
public KeyValue SelectedVendorCode
{
    get { return selectedVendorCode; }
    set
    {
        if (selectedVendorCode != value)
        {
            selectedVendorCode = value;
            this.NotifyChanged("SelectedVendorCode");
            if (selectedVendorCode != null)
            {
                this.VendorDisplayCode = selectedVendorCode.Value;
                OnVendorCodeSelected(); //Sets the vendor collection property bound to the GridView
            }
        }
    }
}

Это тоже хорошо работает. Проблема возникает, когда пользователь использует стрелку вниз для просмотра элементов в AutoCompleteBox. Данные в виде сетки перезагружаются при изменении выбранного элемента AutoCompleteBox.

Я хочу заблокировать эту конкретную функциональность. Я хочу, чтобы данные GridView извлекались только , когда пользователь выбирает поставщика в AutoCompleteBox, а затем нажимает Enter

Я пытался добиться этого, используя метод, упомянутый в этой ссылке

KeyPressCommand не срабатывает, когда я использую стрелку вниз или клавишу ввода. Большинство других клавиш запускают эту команду.

Я немного озадачен этим. Любые вклады, которые вы сделаете, были бы очень полезны.

Заранее спасибо.

~ Винод

1 Ответ

0 голосов
/ 13 августа 2010

Джефф Уилкокс написал пост , чтобы сделать именно это. Ключ заключается в том, чтобы внедрить новый ISelectionAdapter и применить к вашему ListBox. Я делал это в прошлом, и это прекрасно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...