Cómo: Filtrar datos en una vista

En este ejemplo se muestra cómo filtrar los datos en una vista.

Ejemplo

Para crear un filtro, se define un método que proporciona la lógica de filtrado. El método se utiliza como devolución de llamada y acepta un parámetro de tipo object. El método siguiente devuelve todos los objetos Order cuya propiedad filled está establecida en "No", y deja fuera el resto de los 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");
}

A continuación, puede aplicar el filtro, como se muestra en el ejemplo siguiente. En este ejemplo, myCollectionView es un objeto ListCollectionView.

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

Para deshacer el filtrado, puede establecer la propiedad Filter en null:

myCollectionView.Filter = null;

Para obtener información acerca de cómo crear u obtener vistas, consulte Cómo: Obtener la vista predeterminada de una recolección de datos. Para obtener el ejemplo completo, vea Sorting and Filtering Items in a View Sample.

Si el objeto de vista procede de un objeto CollectionViewSource, la lógica de filtrado se aplica estableciendo un controlador para el evento Filter. En el ejemplo siguiente, listingDataView es una instancia de CollectionViewSource.

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);

En el ejemplo siguiente se muestra la implementación del controlador de eventos del filtro ShowOnlyBargainsFilter de ejemplo. Este controlador de eventos usa la propiedad Accepted para filtrar objetos AuctionItem que tienen un CurrentPrice de 25 $ o más.

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;
        }
    }
}

Vea también

Tareas

Cómo: Ordenar datos en una vista

Referencia

CanFilter

CustomFilter

Conceptos

Información general sobre el enlace de datos

Otros recursos

Temas "Cómo..." sobre enlace de datos