Silverlight&的KeyDown问题MVVM

时间:2010-08-13 12:47:14

标签: silverlight mvvm

首先,我是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不会触发。大多数其他键似乎都会触发此命令。

我对此感到有点困惑。你们的任何投入都会非常有帮助。

提前致谢。

〜维诺德

1 个答案:

答案 0 :(得分:0)

Jeff Wilcox写了post来做这件事。关键是要实施新的ISelectionAdapter并适用于您的ListBox。我过去做过这个,效果很好。