2

我想知道如何CollectionViewSource使用 ComboBox 更新 a 上的过滤器。我有以下代码:

 <CollectionViewSource x:Key="cvsCars" 
                       Source="{Binding Source={StaticResource odpCars}}">
 <ComboBox Name="cbxMake" Margin="5" IsEnabled="False" />

我确定我需要 ComboBox 的某种SelectionChanged事件,但我想不出一种方法让它与这段代码一起工作。

private void MakeFilterOn(object sender, RoutedEventArgs e)
{
    cbxMake.IsEnabled = true;
    cvsCars.Filter += new FilterEventHandler(cvsCars_Filter);
}

void cvsCars_Filter(object sender, FilterEventArgs e)
{
    Car car = e.Item as Car;
    if (car != null)
    {
        if (car.Maker.ToString() == cbxMake.SelectedItem.ToString())
        {
            e.Accepted = true;
        }
        else
        {
            e.Accepted = false;
        }
    }
}

任何意见是极大的赞赏。

CollectionViewSource填充ObjectDataProvider。更新将应用于 ListBox。MakeFilterOn 是一个复选框。

4

1 回答 1

2

你必须刷新你的 CollectionViewSource 的视图......所以,在你的组合框的 SelectionChanged 事件的处理程序中,刷新你的 cvs:

cvsCars.View.Refresh();

您可能想研究 WPF 的数据绑定功能,然后再研究模型视图视图模型 (MVVM)“模式”。这样,您可以将组合框绑定SelectedItem到窗口上的属性,DataContext而无需处理 SelectionChanged 事件。

于 2012-12-05T22:06:48.750 回答