首先,我是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}">
现在我的要求如下:
当我从AutoCompleteBox中选择特定的VendorId时,其余的Vendor数据应该加载到gridview中。出于这个原因,我已经通过以下方式在ViewModel中实现了SelectedVendorCode:
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的选定项目发生更改,网格视图中的数据会重新加载。
我想阻止这个特殊功能。当用户在AutoCompleteBox中选择供应商然后按Enter键
时,我希望仅 获取GridView数据我尝试使用此link
中提到的方法实现此目的使用向下箭头或输入键时,KeyPressCommand不会触发。大多数其他键似乎都会触发此命令。
我对此感到有点困惑。你们的任何投入都会非常有帮助。
提前致谢。
〜维诺德