过滤对象的所有实例的解决方案?

时间:2009-12-09 21:34:17

标签: wpf data-binding filtering

我想知道我是否也可以使用CollectionViewSource做这样的事情。我有一个看起来像这样的DataTemplate:

<DataTemplate DataType="{x:Type local:MyObject}">
    <StackPanel Orientation="Horizontal">
        <Grid>
            <Image Source="Images\gear16.png" />
            <Image Source="Images\disk.gif" HorizontalAlignment="Right" VerticalAlignment="Bottom" 
                   Visibility="{Binding MyProp, Converter={StaticResource BooleanToVisibilityConverter}}" />
        </Grid>
        <TextBlock Margin="5,0,0,0" Text="{Binding Name}" VerticalAlignment="Center" />
    </StackPanel>
</DataTemplate>

当然,绑定到该类型对象的所有内容都采用DataTemplate,换句话说,MyObject类型的每个对象都获取该数据源。我可以为CollectionViewSource做类似的事情吗?使MyObject类型的每个对象都通过过滤方法?

问题是我在MyObject中有这个集合的几个实例,并且很难逐个过滤(我认为),并且仍然处理数据和所有内容的更新,所以我想知道是否有像这样的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用CollectionView.Filter属性执行过滤。没有任何方法可以进行任何“群组”过滤,只有“逐个”过滤,如你所说。您可以阅读有关过滤的here 您的过滤处理程序将如下所示:

private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e)
{
    if (e.Item is MyObject)
    {
        e.Accepted = true;
    }
    else
    {
        e.Accepted = false;
    }
}

希望它有所帮助。

相关问题