我想知道我是否也可以使用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中有这个集合的几个实例,并且很难逐个过滤(我认为),并且仍然处理数据和所有内容的更新,所以我想知道是否有像这样的解决方案。
谢谢!
答案 0 :(得分:1)
您可以使用CollectionView.Filter属性执行过滤。没有任何方法可以进行任何“群组”过滤,只有“逐个”过滤,如你所说。您可以阅读有关过滤的here 您的过滤处理程序将如下所示:
private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e)
{
if (e.Item is MyObject)
{
e.Accepted = true;
}
else
{
e.Accepted = false;
}
}
希望它有所帮助。