我有ObservableCollection(Of PdfMarkupAnnotationDataWrapper)
绑定到ListBoxEdit
。另外,我有一个textbox
作为过滤器。
现在,当用户在textbox
中输入内容时,我的Viewmodel中的ObservableCollection
应该通过textbox
的输入进行过滤。
这是我的收藏品
Private Property _annotationList As ObservableCollection(Of PdfMarkupAnnotationDataWrapper)
Public Property AnnotationList As ObservableCollection(Of
PdfMarkupAnnotationDataWrapper)
Get
Return _annotationList
End Get
Set(value As ObservableCollection(Of PdfMarkupAnnotationDataWrapper))
_annotationList = value
OnPropertyChanged()
End Set
End Property
有没有办法完成这项任务?
我正在考虑复制该集合,但必须有更好的解决方案。
答案 0 :(得分:0)
我正在考虑复制该集合,但必须有更好的解决方案。
那就是从中删除或添加项目。但是您仍然需要将原始未过滤的项目存储在另一个集合中。
您可以使用LINQ进行过滤,例如:
Private _unFilteredAnnotationList As ObservableCollection(Of PdfMarkupAnnotationDataWrapper) 'make sure to populate this one
Private _annotationList As ObservableCollection(Of PdfMarkupAnnotationDataWrapper)
Public Property AnnotationList As ObservableCollection(Of PdfMarkupAnnotationDataWrapper)
Get
Return _annotationList
End Get
Set(value As ObservableCollection(Of PdfMarkupAnnotationDataWrapper))
_annotationList = value
OnPropertyChanged()
End Set
End Property
Private _text As String
Public Property Text As String
Get
Return _text
End Get
Set(value As String)
_text = value
OnPropertyChanged()
'filter
AnnotationList = New ObservableCollection(Of PdfMarkupAnnotationDataWrapper)(_unFilteredAnnotationList.Where(Function(x)
Return x.YourStringProperty.StartsWith(_text)
End Function))
End Set
End Property