小编Pur*_*r86的帖子

WPF 过滤器 ObservableCollection 与 ICollectionView

我有一个 ObservableCollection、一个 ICollectionView、一个过滤器和两个文本框。如果我仅对一个文本框使用过滤器,则效果很好。如果我添加另一个文本框并将过滤器绑定到第二个 TB,则过滤会很困难。

我用两个过滤器(不同的名称 - 相同的功能)尝试过,但这也不起作用。

我认为这可能与 ObservableCollection 有关。

这是我的过滤器:

this.AllUsers.Filter = i =>
{
      if (string.IsNullOrEmpty(this.SearchUsername)) return true;

      User u = i as User;
      return u.Name.StartsWith(this.SearchUsername);
};
Run Code Online (Sandbox Code Playgroud)

我的 ICollectionView 包含来自 ObservableCollection 的数据:

public ICollectionView AllUsers
{
    get
    {
       return CollectionViewSource.GetDefaultView(UserSource);
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的 ObservableCollection:

public ObservableCollection<User> UserSource
{
    get
    {
        return _UserSource;
    }
    set
    {
        _UserSource = value; OnPropertyChanged();
    }

}
Run Code Online (Sandbox Code Playgroud)

AllUsers.Refresh();我正在使用字符串属性 SearchUsername更新视图。

ObservableCollection 绑定到 ListBox,字符串 Property 绑定到 TextBox。

第二个文本框也是如此。相同的 ObservableCollection 绑定到不同的 ListBox,字符串属性(UserName)绑定到第二个 TextBox。

那么有没有一种简单的方法可以解决这个问题呢?

c# wpf mvvm

5
推荐指数
1
解决办法
4736
查看次数

标签 统计

c# ×1

mvvm ×1

wpf ×1