【问题标题】:KeyDown problem with Silverlight & MVVMSilverlight 和 MVVM 的 KeyDown 问题
【发布时间】:2010-08-13 12:47:14
【问题描述】:

首先,我是 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 数据应加载到网格视图中。出于这个原因,我在我的 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中提到的方法来实现这一点

当我使用向下箭头或 Enter 键时,KeyPressCommand 不会触发。大多数其他键似乎都会触发此命令。

我对此感到有些困惑。你们的任何意见都会非常有帮助。

提前致谢。

~维诺德

【问题讨论】:

    标签: silverlight mvvm


    【解决方案1】:

    Jeff Wilcox 写了一个 post 来做到这一点。关键是实现一个新的ISelectionAdapter 并应用到你的ListBox。我过去做过这个,效果很好。

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2011-06-14
      相关资源
      最近更新 更多