Caliburn.Micro的WPF数据网格过滤

3
我有一个使用Caliburn.Micro的WPF应用程序。DataGrid绑定到ViewModel中的对象集合。如果可能的话,请建议一种方法来筛选DataGrid内容,可以通过任何字段进行筛选。
谢谢。

你是绑定到集合(List、ObservableCollection)还是CollectionView?http://msdn.microsoft.com/en-us/library/system.windows.data.collectionview.aspx - ShadeOfGrey
1个回答

8
在视图模型中创建一个新的属性:
private ICollectionView fooView;

public ICollectionView FooView
{
    get
    {
        return this.fooView;
    }

    set
    {
        this.fooView = value;

        NotifyPropertyChanged("FooView");
    }
}

当您填充可绑定集合后:

// Populate collection
BindableCollection collectionName = this.PopulateCollection();

FooView = CollectionViewSource.GetDefaultView(collectionName);

在你的视图中,将绑定从collectionName更改为FooView

CollectionView类提供了对数据进行排序/筛选/分组的方法。在您的情况下,请参阅如何:在视图中筛选数据 。筛选代码将根据您的模型和要求而变化。


非常感谢。然而我在这个问题上遇到了困难。据我所知,该方法让我可以像“仅显示未完成订单”或“显示所有订单”等一样进行过滤,但我需要能够让用户在想要按客户进行筛选时选择客户,并显示所有记录,其中客户是由用户选择的客户。我们无法使用提供的示例中的逻辑(例如返回(order.Filled == "No");),因为客户不是像“是”或“否”这样的固定值列表。 - David Shochet
您可以创建多个筛选事件处理程序(针对任何要应用筛选的字段)。因此,当用户选择类型为“客户”的值时,请应用类型为“客户”的字段的处理程序(例如+= new FilterEventHandler(ShowRecordsByCustomer);)。如果他选择了类型为“订单”的值,则应用该类型字段的筛选器。 - ShadeOfGrey
你好。你找到解决方法了吗?我可能会对一些代码示例感兴趣。 - Stéphan F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接