使用Silverlight中的MVVM / XAML中的CollectionViewSource进行过滤

时间:2012-02-04 00:50:03

标签: silverlight-4.0 mvvm collectionviewsource

我有4张桌子:

  1. 商店=> StoreID,AddressID
  2. Contacts => ContactID,StoreID,DesignationID,
  3. 指定=> DesignationID
  4. 地址=> AddressID
  5. 在实体查询中,我在获取商店的所有细节时使用了Include。

    ObjectContext.Stores.Include("Address").Include("Contacts.Designation");
    

    所以我得到了所有商店的所有联系人和其他对象,如地址。现在我想过滤商店的联系人,但我们的域名服务Linq不允许使用Include进行过滤。它包括所有数据。所以我想使用CollectionViewSource来过滤我的子数据。

    在用户界面中,我有一个ListBox用于商店信息,并在该ListBox中 - >我还有一个用于商店联系人的列表框,我希望这些联系人在其加载时过滤一些条件......

    我无法弄清楚如何使用MVVM或直接在XAML中执行此操作。但是使用MVVM最好是更好。

    有人可以帮我解决这个问题吗?

    感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

您需要先获取源项目的默认ICollectionView

你可以这样做

var collectionView = CollectionViewSource.GetDefaultView(collectionToFilter);

接下来,您创建一个像这样的过滤器委托

collectionView.Filter = delegate(object item){return some boolean expression;};

希望这有帮助