我有一个ObservableCollection、一个ICollectionView、一个筛选器和两个文本框。
如果我只为一个TextBox使用筛选器,它可以正常工作。但是,如果我添加另一个TextBox并将筛选器绑定到第二个TB上,则筛选会出现问题。
我已尝试使用两个筛选器(不同名称-相同功能),但这也没有起作用。
我认为可能与ObservableCollection有关..
这是我的筛选器:
this.AllUsers.Filter = i =>
{
if (string.IsNullOrEmpty(this.SearchUsername)) return true;
User u = i as User;
return u.Name.StartsWith(this.SearchUsername);
};
我的ICollectionView包含ObservableCollection中的数据:
public ICollectionView AllUsers
{
get
{
return CollectionViewSource.GetDefaultView(UserSource);
}
}
我的ObservableCollection:
public ObservableCollection<User> UserSource
{
get
{
return _UserSource;
}
set
{
_UserSource = value; OnPropertyChanged();
}
}
我正在使用
AllUsers.Refresh();
在我的字符串属性SearchUsername中更新视图。ObservableCollection被绑定到一个ListBox,字符串属性被绑定到TextBox。
第二个TextBox也是同样的情况。同一个ObservableCollection被绑定到另一个不同的ListBox,字符串属性(UserName)被绑定到第二个TextBox。
那么有没有简单的方法来解决这个问题呢?
set
,你想要设置集合中的项目而不是整个集合。 - MikeTget{ return _UserSource?? (_UserSource = new ObservableCollection<User>());}
? - Purger86public ObservableCollection<User> UserSource {get;} = new ObservableCollection<User>();
。如果您不使用C#6,则使用以下代码:private _UserSource = new ObservableCollection<User>(); public ObservableCollection<User> UserSource {get { return _UserSource ;}}
。 - MikeT