Прежде всего, я новичок в мире 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 не срабатывает, когда я использую стрелку вниз или клавишу ввода. Большинство других клавиш запускают эту команду.
Я немного озадачен этим. Любые вклады, которые вы сделаете, были бы очень полезны.
Заранее спасибо.
~ Винод