按钮切换时过滤ObservableCollection

时间:2014-11-17 05:56:59

标签: wpf observablecollection

目前我有一个ObservableCollection<Car> CarList,一个WrapPanel和一个ToggleButtonWrapPanel包含一些CarInfo用户控件,每个CarInfo引用Car中的CarList

基本上,当新Car添加到CarList时,应将新的CarInfo控件添加到WrapPanel。单击ToggleButton后,WrapPanel应仅显示CarInfo中的Car.Speed > 70

我现在订阅CarList.CollectionChanged来更新WrapPanel,并使用ICollectionView进行过滤。

我的问题是:如何在ToggleButton点击上触发过滤?

我是WPF的新手,因此非常感谢一些示例代码!非常感谢你!

1 个答案:

答案 0 :(得分:0)

您应该将WrapPanel的ItemsSource绑定到汽车收藏,而不是手动更新。

要切换过滤器,请将此事件处理程序添加到切换按钮:

    private void toggleFilter_Checked(object sender, RoutedEventArgs e)
    {
        ICollectionView view = CollectionViewSource.GetDefaultView(CarList);
        if (toggleFilter.IsChecked == true)
            view.Filter = car => ((Car)car).Speed > 70;
        else
            view.Filter = null;
    }