Como: Filtrar dados em um modo de exibição

Este exemplo mostra como filtrar dados em uma visualização.

Exemplo

Para criar um filtro, defina um método que forneça a lógica de filtragem. Este método é usado como um callback que aceita um parâmetro do tipo object. O seguinte método retorna todos os objetos Order com a propriedade filled definida como "No", filtrando o resto dos objetos.

Public Function Contains(ByVal de As Object) As Boolean
    Dim order1 As Order = TryCast(de, Order)
    Return (order1.Filled Is "No")
End Function
public bool Contains(object de)
{
    Order order = de as Order;
    //Return members whose Orders have not been filled
    return(order.Filled== "No");
}

Você pode então aplicar o filtro, como mostrado no seguinte exemplo. Neste exemplo, myCollectionView é um objeto ListCollectionView.

myCollectionView.Filter = new Predicate<object>(Contains);

Para desfazer a filtragem, você pode definir a propriedade Filter para null.

myCollectionView.Filter = null;

Para informação sobre como criar ou obter uma visualização, consulte Como: Obter o Modo de Exibição Padrão de uma Coleção de Dados. For the complete example, see Classificação e filtragem de itens em um exemplo de modo de Exibir.

Se seu objeto visualização vem de um objeto CollectionViewSource, você aplica lógica de filtro definindo um manipulador de eventos para o evento Filter. No próximo exemplo, listingDataView é uma instância de CollectionViewSource.

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);

O seguinte mostra a implementação do tratador de eventos de filtro ShowOnlyBargainsFilter do exemplo. Este tratador de eventos usa a propriedade Accepted para filtrar os objetos AuctionItem que têm um CurrentPrice de $25 ou maior.

private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e)
{
    AuctionItem product = e.Item as AuctionItem;
    if (product != null)
    {
        // Filter out products with price 25 or above
        if (product.CurrentPrice < 25)
        {
            e.Accepted = true;
        }
        else
        {
            e.Accepted = false;
        }
    }
}

For the complete example, see Demonstração de ligação de dados.

Consulte também

Tarefas

Como: Classificar dados na visualização

Conceitos

Revisão de Associação de Dados

Referência

CanFilter

CustomFilter

Outros recursos

Exemplos de ligação de dados

Data Binding How-to Topics