Compartir a través de


Clase DataServiceCollection<T>

Representa una colección de entidades dinámica que proporciona notificaciones cuando se agregan o quitan elementos, o cuando se actualiza la lista.

Jerarquía de herencia

System.Object
  System.Collections.ObjectModel.Collection<T>
    System.Collections.ObjectModel.ObservableCollection<T>
      System.Data.Services.Client.DataServiceCollection<T>

Espacio de nombres:  System.Data.Services.Client
Ensamblado:  Microsoft.Data.Services.Client (en Microsoft.Data.Services.Client.dll)

Sintaxis

'Declaración
Public Class DataServiceCollection(Of T) _
    Inherits ObservableCollection(Of T)
'Uso
Dim instance As DataServiceCollection(Of T)
public class DataServiceCollection<T> : ObservableCollection<T>
generic<typename T>
public ref class DataServiceCollection : public ObservableCollection<T>
type DataServiceCollection<'T> =  
    class
        inherit ObservableCollection<'T>
    end
JScript no admite tipos y métodos genéricos.

Parámetros de tipo

  • T
    Tipo de entidad.

El tipo DataServiceCollection<T> expone los siguientes miembros.

Constructores

  Nombre Descripción
Método público DataServiceCollection<T>() Crea una nueva instancia de la clase DataServiceCollection<T>.
Método público DataServiceCollection<T>(IEnumerable<T>) Crea una nueva instancia de la clase DataServiceCollection<T> basándose en la ejecución de la consulta.
Método público DataServiceCollection<T>(DataServiceContext) Crea una nueva instancia de la clase DataServiceCollection<T> que usa el objeto DataServiceContext especificado.
Método público DataServiceCollection<T>(IEnumerable<T>, TrackingMode) Crea una nueva instancia de la clase DataServiceCollection<T> basándose en la ejecución de la consulta y con el modo de seguimiento especificado.
Método público DataServiceCollection<T>(DataServiceContext, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Crea una nueva instancia de la clase DataServiceCollection<T> con los delegados de método de cambio proporcionados y que usa el DataServiceContext especificado.
Método público DataServiceCollection<T>(IEnumerable<T>, TrackingMode, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Crea una nueva instancia de la clase DataServiceCollection<T> basándose en la ejecución de la consulta y con los delegados de método de cambio proporcionados.
Método público DataServiceCollection<T>(DataServiceContext, IEnumerable<T>, TrackingMode, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Crea una nueva instancia de la clase DataServiceCollection<T> basándose en la ejecución de la consulta, con los delegados de método de cambio proporcionados y que usa el DataServiceContext proporcionado.

Arriba

Propiedades

  Nombre Descripción
Propiedad pública Continuation Obtiene un objeto de continuación que se usa para devolver el conjunto siguiente de resultados paginados.
Propiedad pública Count (Se hereda de Collection<T>.)
Propiedad pública Item (Se hereda de Collection<T>.)
Propiedad protegida Items (Se hereda de Collection<T>.)

Arriba

Métodos

  Nombre Descripción
Método público Add (Se hereda de Collection<T>.)
Método protegido BlockReentrancy (Se hereda de ObservableCollection<T>.)
Método protegido CheckReentrancy (Se hereda de ObservableCollection<T>.)
Método público Clear() (Se hereda de Collection<T>.)
Método público Clear(Boolean) Quita todos los elementos de la colección y, opcionalmente, desasocia todos los elementos de DataServiceContext.
Método protegido ClearItems (Se hereda de ObservableCollection<T>.)
Método público Contains (Se hereda de Collection<T>.)
Método público CopyTo (Se hereda de Collection<T>.)
Método público Detach Deshabilita el seguimiento por parte de DataServiceContext de todos los elementos de la colección.
Método público Equals (Se hereda de Object.)
Método protegido Finalize (Se hereda de Object.)
Método público GetEnumerator (Se hereda de Collection<T>.)
Método público GetHashCode (Se hereda de Object.)
Método público GetType (Se hereda de Object.)
Método público IndexOf (Se hereda de Collection<T>.)
Método público Insert (Se hereda de Collection<T>.)
Método protegido InsertItem Agrega un elemento especificado a la colección en el índice especificado. (Invalida ObservableCollection<T>.InsertItem(Int32, T).)
Método público Load(IEnumerable<T>) Carga una colección de objetos de entidad en la colección. No compatible con el cliente de WCF Data Services 5.0 para Silverlight.
Método público Load(T) Carga un único objeto de entidad en la colección. No compatible con el cliente de WCF Data Services 5.0 para Silverlight.
Método público LoadAsync() Carga elementos en la colección de forma asincrónica cuando representa la propiedad de navegación de una entidad. Compatible solo con el cliente de WCF Data Services 5.0 para Silverlight.
Método público LoadAsync(IQueryable<T>) Carga la colección de forma asincrónica ejecutando DataServiceQuery<TElement>. Compatible solo con el cliente de WCF Data Services 5.0 para Silverlight.
Método público LoadNextPartialSetAsync Carga la página siguiente de datos en la colección. Compatible solo con el cliente de WCF Data Services 5.0 para Silverlight.
Método protegido MemberwiseClone (Se hereda de Object.)
Método público Move (Se hereda de ObservableCollection<T>.)
Método protegido MoveItem (Se hereda de ObservableCollection<T>.)
Método protegido OnCollectionChanged (Se hereda de ObservableCollection<T>.)
Método protegido OnPropertyChanged (Se hereda de ObservableCollection<T>.)
Método público Remove (Se hereda de Collection<T>.)
Método público RemoveAt (Se hereda de Collection<T>.)
Método protegido RemoveItem (Se hereda de ObservableCollection<T>.)
Método protegido SetItem (Se hereda de ObservableCollection<T>.)
Método público ToString (Se hereda de Object.)

Arriba

Eventos

  Nombre Descripción
Evento público CollectionChanged (Se hereda de ObservableCollection<T>.)
Evento público LoadCompleted Se produce cuando se completa una operación de carga asincrónica. Compatible solo con el cliente de WCF Data Services 5.0 para Silverlight.
Evento protegido PropertyChanged (Se hereda de ObservableCollection<T>.)

Arriba

Implementaciones de interfaces explícitas

  Nombre Descripción
Implementación de interfaces explícitasMétodo privado IList.Add (Se hereda de Collection<T>.)
Implementación de interfaces explícitasMétodo privado IList.Contains (Se hereda de Collection<T>.)
Implementación de interfaces explícitasMétodo privado ICollection.CopyTo (Se hereda de Collection<T>.)
Implementación de interfaces explícitasMétodo privado IEnumerable.GetEnumerator (Se hereda de Collection<T>.)
Implementación de interfaces explícitasMétodo privado IList.IndexOf (Se hereda de Collection<T>.)
Implementación de interfaces explícitasMétodo privado IList.Insert (Se hereda de Collection<T>.)
Implementación de interfaces explícitasPropiedad privada IList.IsFixedSize (Se hereda de Collection<T>.)
Implementación de interfaces explícitasPropiedad privada ICollection<T>.IsReadOnly (Se hereda de Collection<T>.)
Implementación de interfaces explícitasPropiedad privada IList.IsReadOnly (Se hereda de Collection<T>.)
Implementación de interfaces explícitasPropiedad privada ICollection.IsSynchronized (Se hereda de Collection<T>.)
Implementación de interfaces explícitasPropiedad privada IList.Item (Se hereda de Collection<T>.)
Implementación de interfaces explícitasEvento privado INotifyPropertyChanged.PropertyChanged (Se hereda de ObservableCollection<T>.)
Implementación de interfaces explícitasMétodo privado IList.Remove (Se hereda de Collection<T>.)
Implementación de interfaces explícitasPropiedad privada ICollection.SyncRoot (Se hereda de Collection<T>.)

Arriba

Comentarios

Servicios de datos de Microsoft WCF proporciona la clase DataServiceCollection<T> para admitir el enlace de datos a controles en aplicaciones cliente. Esta clase hereda de la clase ObservableCollection<T>, que implementa la interfaz INotifyCollectionChanged y es el mecanismo de enlace de datos principal para las aplicaciones basadas en Windows Presentation Foundation (WPF) y Silverlight.

Puede cargar una colección de enlace ObservableCollection<T> usando cualquier colección que implemente la interfaz IEnumerable<T>. Los elementos cargados en la colección de enlace deben implementar la interfaz INotifyPropertyChanged. Para obtener más información, vea Enlazar datos a controles (WCF Data Services).

Ejemplos

El ejemplo siguiente corresponde a la página de código subyacente de una página de lenguaje XAML que define la ventana SalesOrders en WPF. Cuando se carga la ventana, se crea una DataServiceCollection<T> basada en el resultado de una consulta que devuelve los clientes con objetos relacionados, filtrados por país. Este resultado se enlaza a la propiedad DataContext de StackPanel que es el control de diseño raíz para la ventana de WPF.

Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Imaging
Imports System.Windows.Navigation
Imports System.Windows.Shapes
Imports System.Data.Services.Client
Imports NorthwindClient.Northwind

Partial Public Class CustomerOrdersWpf
    Inherits Window

    Private context As NorthwindEntities
    Private trackedCustomers As DataServiceCollection(Of Customer)
    Private Const customerCountry As String = "Germany"
    Private Const svcUri As String = "https://localhost:12345/Northwind.svc/"
    Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Try
            ' Initialize the context for the data service.
            context = New NorthwindEntities(New Uri(svcUri))

            ' Create a LINQ query that returns customers with related orders.
            Dim customerQuery = From cust In context.Customers.Expand("Orders") _
                                    Where cust.Country = customerCountry _
                                    Select cust

                ' Create a new collection for binding based on the LINQ query.
            trackedCustomers = New DataServiceCollection(Of Customer)(customerQuery)

                ' Bind the root StackPanel element to the collection
                ' related object binding paths are defined in the XAML.
            Me.LayoutRoot.DataContext = trackedCustomers
        Catch ex As DataServiceQueryException
            MessageBox.Show("The query could not be completed:\n" + ex.ToString())
        Catch ex As InvalidOperationException
            MessageBox.Show("The following error occurred:\n" + ex.ToString())
        End Try
    End Sub
    Private Sub saveChangesButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
        ' Save changes to the data service.
        context.SaveChanges()
    End Sub
End Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.Services.Client;
using NorthwindClient.Northwind;

namespace NorthwindClient
{
    public partial class CustomerOrdersWpf : Window
    {
        private NorthwindEntities context;
        private DataServiceCollection<Customer> trackedCustomers;
        private const string customerCountry = "Germany";
        private const string svcUri = "https://localhost:12345/Northwind.svc/";

        public CustomerOrdersWpf()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                // Initialize the context for the data service.
                context = new NorthwindEntities(new Uri(svcUri));

                // Create a LINQ query that returns customers with related orders.
                var customerQuery = from cust in context.Customers.Expand("Orders")
                                    where cust.Country == customerCountry
                                    select cust;

                // Create a new collection for binding based on the LINQ query.
                trackedCustomers = new DataServiceCollection<Customer>(customerQuery);

                // Bind the root StackPanel element to the collection;
                // related object binding paths are defined in the XAML.
                LayoutRoot.DataContext = trackedCustomers;
            }
            catch (DataServiceQueryException ex)
            {
                MessageBox.Show("The query could not be completed:\n" + ex.ToString());
            }
            catch (InvalidOperationException ex)
            {
                MessageBox.Show("The following error occurred:\n" + ex.ToString());
            }
        }
        private void saveChangesButton_Click(object sender, RoutedEventArgs e)
        {
            // Save changes to the data service.
            context.SaveChanges();
        }
    }
}

El siguiente código XAML define la ventana SalesOrders en WPF para el ejemplo anterior.

    <Window x:Class="CustomerOrdersWpf"
             xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006" 
             Height="423" Width="679" Loaded="Window_Loaded">
    <StackPanel Orientation="Vertical" Height="Auto" Name="LayoutRoot" Width="Auto">
        <Label Content="Customer ID" Margin="20,0,0,0" />
        <ComboBox Name="customerIDComboBox" DisplayMemberPath="CustomerID" ItemsSource="{Binding}" 
                  IsSynchronizedWithCurrentItem="True" SelectedIndex="0" Height="23" Width="120" 
                  HorizontalAlignment="Left" Margin="20,0,0,0" VerticalAlignment="Center" />
        <ListView ItemsSource="{Binding Path=Orders}" Name="ordersDataGrid" Margin="34,46,34,50">
            <ListView.View>
                <GridView AllowsColumnReorder="False" ColumnHeaderToolTip="Line Items">
                    <GridViewColumn DisplayMemberBinding="{Binding Path=OrderID, Mode=OneWay}" 
                        Header="Order ID" Width="50"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=OrderDate, Mode=TwoWay}" 
                        Header="Order Date" Width="50"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Freight, Mode=TwoWay}" 
                        Header="Freight Cost" Width="50"/>
                </GridView>
            </ListView.View>
        </ListView>
        <Button Name="saveChangesButton" Content="Save Changes" Click="saveChangesButton_Click" 
                Width="80" Height="30" Margin="450,0,0,0"/>
    </StackPanel>
</Window>

Seguridad para subprocesos

Cualquier miembro público static (Shared en Visual Basic) de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Vea también

Referencia

Espacio de nombres System.Data.Services.Client

Otros recursos

Enlazar datos a controles (WCF Data Services)