如何在Silverlight中实现“实时”过滤

时间:2009-08-07 12:38:27

标签: silverlight silverlight-3.0

我正在使用新的PagedCollectionView作为我的ItemsSource。

我已将CollectionView绑定到DataGrid,并且需要网格仅显示通过我的过滤器的值,如下所示:

            var oc = new ObservableCollection<User>();
        var pc = new PagedCollectionView(oc);
        dataGrid.ItemsSource = pc;

User类实现INotifyPropertyChanged。我正在应用这样的过滤器:

        private void CheckBox_Checked(object sender, RoutedEventArgs e)
    {
        pc.Filter += Include;
    }

    private bool Include(object obj)
    {
        return (obj as User).Name == filterText.Text;
    }

它有效。问题是,如果我更新用户,则不会更新过滤结果。如果清除并重新应用过滤器就可以了。

当然我可以在PagedCollectionView上调用Refresh()方法,但我认为这可以不用手动刷新视图。

我需要的是“实时过滤”机制。关于如何编码的任何想法?

场景是:用于查看系统上的实时警报的应用程序。假设用户已选择仅在列0中查看“错误”或“警告”的行(这是我的过滤器)。当一行中的column0从“Info”更改为“Warning”时,该行应该是自动可见的(它通过过滤器)而不调用Refresh()。

感谢Larsi

1 个答案:

答案 0 :(得分:0)

难道你不能只使用Silverlight 3 SDK中的AutoCompleteBox控件吗?