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 | |
---|---|---|
DataServiceCollection<T>() | Crea una nueva instancia de la clase DataServiceCollection<T>. | |
DataServiceCollection<T>(IEnumerable<T>) | Crea una nueva instancia de la clase DataServiceCollection<T> basándose en la ejecución de la consulta. | |
DataServiceCollection<T>(DataServiceContext) | Crea una nueva instancia de la clase DataServiceCollection<T> que usa el objeto DataServiceContext especificado. | |
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. | |
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. | |
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. | |
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 | |
---|---|---|
Continuation | Obtiene un objeto de continuación que se usa para devolver el conjunto siguiente de resultados paginados. | |
Count | (Se hereda de Collection<T>.) | |
Item | (Se hereda de Collection<T>.) | |
Items | (Se hereda de Collection<T>.) |
Arriba
Métodos
Nombre | Descripción | |
---|---|---|
Add | (Se hereda de Collection<T>.) | |
BlockReentrancy | (Se hereda de ObservableCollection<T>.) | |
CheckReentrancy | (Se hereda de ObservableCollection<T>.) | |
Clear() | (Se hereda de Collection<T>.) | |
Clear(Boolean) | Quita todos los elementos de la colección y, opcionalmente, desasocia todos los elementos de DataServiceContext. | |
ClearItems | (Se hereda de ObservableCollection<T>.) | |
Contains | (Se hereda de Collection<T>.) | |
CopyTo | (Se hereda de Collection<T>.) | |
Detach | Deshabilita el seguimiento por parte de DataServiceContext de todos los elementos de la colección. | |
Equals | (Se hereda de Object.) | |
Finalize | (Se hereda de Object.) | |
GetEnumerator | (Se hereda de Collection<T>.) | |
GetHashCode | (Se hereda de Object.) | |
GetType | (Se hereda de Object.) | |
IndexOf | (Se hereda de Collection<T>.) | |
Insert | (Se hereda de Collection<T>.) | |
InsertItem | Agrega un elemento especificado a la colección en el índice especificado. (Invalida ObservableCollection<T>.InsertItem(Int32, T).) | |
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. | |
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. | |
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. | |
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. | |
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. | |
MemberwiseClone | (Se hereda de Object.) | |
Move | (Se hereda de ObservableCollection<T>.) | |
MoveItem | (Se hereda de ObservableCollection<T>.) | |
OnCollectionChanged | (Se hereda de ObservableCollection<T>.) | |
OnPropertyChanged | (Se hereda de ObservableCollection<T>.) | |
Remove | (Se hereda de Collection<T>.) | |
RemoveAt | (Se hereda de Collection<T>.) | |
RemoveItem | (Se hereda de ObservableCollection<T>.) | |
SetItem | (Se hereda de ObservableCollection<T>.) | |
ToString | (Se hereda de Object.) |
Arriba
Eventos
Nombre | Descripción | |
---|---|---|
CollectionChanged | (Se hereda de ObservableCollection<T>.) | |
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. | |
PropertyChanged | (Se hereda de ObservableCollection<T>.) |
Arriba
Implementaciones de interfaces explícitas
Nombre | Descripción | |
---|---|---|
IList.Add | (Se hereda de Collection<T>.) | |
IList.Contains | (Se hereda de Collection<T>.) | |
ICollection.CopyTo | (Se hereda de Collection<T>.) | |
IEnumerable.GetEnumerator | (Se hereda de Collection<T>.) | |
IList.IndexOf | (Se hereda de Collection<T>.) | |
IList.Insert | (Se hereda de Collection<T>.) | |
IList.IsFixedSize | (Se hereda de Collection<T>.) | |
ICollection<T>.IsReadOnly | (Se hereda de Collection<T>.) | |
IList.IsReadOnly | (Se hereda de Collection<T>.) | |
ICollection.IsSynchronized | (Se hereda de Collection<T>.) | |
IList.Item | (Se hereda de Collection<T>.) | |
INotifyPropertyChanged.PropertyChanged | (Se hereda de ObservableCollection<T>.) | |
IList.Remove | (Se hereda de Collection<T>.) | |
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