说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

ICollectionView.Filter 怎么写呀?

编辑:说三道四文库 发布时间:2018-08-16 02:32
HTML文档下载 WORD文档下载 PDF文档下载
在做一个Filter 用C#的转过来
view.Filter += Me.FilterPredicate  ' 这里出错
 view.Filter -= Me.FilterPredicate   '这里出错

'--------------------c#
ICollectionView view = CollectionViewSource.GetDefaultView(newValue);view.Filter += this.FilterPredicate;
'--------------------VB完整代码
Protected Overloads Overrides Sub OnItemsSourceChanged(ByVal oldValue As system.Collections.IEnumerable, ByVal newValue As System.Collections.IEnumerable)
            If newValue IsNot Nothing Then
                Dim view As ICollectionView = CollectionViewSource.GetDefaultView(newValue)
                view.Filter += Me.FilterPredicate  ' 这里出错
            End If

            If oldValue IsNot Nothing Then
                Dim view As ICollectionView = CollectionViewSource.GetDefaultView(oldValue)
                view.Filter -= Me.FilterPredicate   '这里出错
            End If

            MyBase.OnItemsSourceChanged(oldValue, newValue)
End Sub
Private Function FilterPredicate(ByVal value As Object) As Boolean
            ' We don't like nulls. 
            If value Is Nothing Then
                Return False
            End If

            ' If there is no text, there's no reason to filter. 
            If Me.Text.Length = 0 Then
                Return True
            End If

            Dim prefix As String = Me.Text

            ' If the end of the text is selected, do not mind it. 
            If Me.length > 0 AndAlso Me.start + Me.length = Me.Text.Length Then
                prefix = prefix.Substring(0, Me.start)
            End If

            Return value.ToString().StartsWith(prefix, Not Me.IsCaseSensitive, CultureInfo.CurrentCulture)
End Function
view.Filter = New Predicate(Of Object)(AddressOf FilterPredicate)
运行到 view.Filter = New Predicate(Of Object)(AddressOf FilterPredicate)
 不支持所指定的方法???
view.Filter += Me.FilterPredicate  ' 这里出错 
 AddHandler View.filter, AddressOf Me.FilterPredicate
运行到 view.Filter = New Predicate(Of Object)(AddressOf FilterPredicate) 出错了,,,
不支持所指定的方法???
引用 3 楼 xiaoxuanZhu 的回复:
view.Filter += Me.FilterPredicate  ' 这里出错 
AddHandler View.filter, AddressOf Me.FilterPredicate

这个试试看
To xiaoxuanZhu  
你的回答也不行
出错,接口没这个事件
view.Filter += Me.FilterPredicate  ' 这里出错 
AddHandler View.filter, AddressOf Me.FilterPredicate
学习下
Partial Public Class ProductForm
Public Sub New()
MyBase.New()
Me.InitializeComponent()
Dim view As ICollectionView =
CollectionViewSource.GetDefaultView(ProductDetail.DataContext)
'view.SortDescriptions.Add(New SortDescription("PInstaller",
ListSortDirection.Ascending))

view.Filter = New Predicate(Of Object)(AddressOf Contains)


' Insert code required on object creation below this point.
End Sub
Public Function Contains(ByVal de As Object) As Boolean
Dim order1 As Products = TryCast(de, Products)
Return (order1.PInstaller = "John Doe")
End Function

一段网上代码
UP
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘