Partager via


Classe DataServiceCollection<T>

Représente une collection d'entités dynamiques qui fournit des notifications lorsque des éléments sont ajoutés, supprimés ou que la liste est actualisée.

Hiérarchie d'héritage

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

Espace de noms :  System.Data.Services.Client
Assembly :  Microsoft.Data.Services.Client (en Microsoft.Data.Services.Client.dll)

Syntaxe

'Déclaration
Public Class DataServiceCollection(Of T) _
    Inherits ObservableCollection(Of T)
'Utilisation
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 ne prend pas en charge les types et les méthodes génériques.

Paramètres de type

  • T
    Type d'entité.

Le type DataServiceCollection<T> expose les membres suivants.

Constructeurs

  Nom Description
Méthode publique DataServiceCollection<T>() Crée une instance de la classe DataServiceCollection<T>.
Méthode publique DataServiceCollection<T>(IEnumerable<T>) Crée une instance de la classe DataServiceCollection<T> en fonction de l'exécution de la requête.
Méthode publique DataServiceCollection<T>(DataServiceContext) Crée une instance de la classe DataServiceCollection<T> qui utilise le DataServiceContext spécifié.
Méthode publique DataServiceCollection<T>(IEnumerable<T>, TrackingMode) Crée une instance de la classe DataServiceCollection<T> en fonction de l'exécution de la requête et avec le mode de suivi spécifié.
Méthode publique DataServiceCollection<T>(DataServiceContext, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Crée une instance de la classe DataServiceCollection<T> avec les délégués de la méthode de modification fournis et utilisant le DataServiceContext spécifié.
Méthode publique DataServiceCollection<T>(IEnumerable<T>, TrackingMode, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Crée une instance de la classe DataServiceCollection<T> en fonction de l'exécution de la requête et avec les délégués de la méthode de modification fournis.
Méthode publique DataServiceCollection<T>(DataServiceContext, IEnumerable<T>, TrackingMode, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Crée une instance de la classe DataServiceCollection<T> en fonction de l'exécution de la requête, avec les délégués de la méthode de modification fournis et utilisant le DataServiceContext fourni.

Haut de la page

Propriétés

  Nom Description
Propriété publique Continuation Obtient un objet de continuation qui est utilisé pour retourner l'ensemble suivant de résultats paginés.
Propriété publique Count (hérité de Collection<T>.)
Propriété publique Item (hérité de Collection<T>.)
Propriété protégée Items (hérité de Collection<T>.)

Haut de la page

Méthodes

  Nom Description
Méthode publique Add (hérité de Collection<T>.)
Méthode protégée BlockReentrancy (hérité de ObservableCollection<T>.)
Méthode protégée CheckReentrancy (hérité de ObservableCollection<T>.)
Méthode publique Clear() (hérité de Collection<T>.)
Méthode publique Clear(Boolean) Supprime tous les éléments de la collection et détache éventuellement tous les éléments du DataServiceContext.
Méthode protégée ClearItems (hérité de ObservableCollection<T>.)
Méthode publique Contains (hérité de Collection<T>.)
Méthode publique CopyTo (hérité de Collection<T>.)
Méthode publique Detach Désactive le suivi de DataServiceContext dans tous les éléments de la collection.
Méthode publique Equals (hérité de Object.)
Méthode protégée Finalize (hérité de Object.)
Méthode publique GetEnumerator (hérité de Collection<T>.)
Méthode publique GetHashCode (hérité de Object.)
Méthode publique GetType (hérité de Object.)
Méthode publique IndexOf (hérité de Collection<T>.)
Méthode publique Insert (hérité de Collection<T>.)
Méthode protégée InsertItem Ajoute un élément spécifié à la collection, à l'index spécifié. (remplace ObservableCollection<T>.InsertItem(Int32, T).)
Méthode publique Load(IEnumerable<T>) Charge une collection d'objets d'entité dans la collection. N'est pas pris en charge par le cliente WCF Data Services 5.0 pour Silverlight.
Méthode publique Load(T) Charge un seul objet d'entité dans la collection. N'est pas pris en charge par le cliente WCF Data Services 5.0 pour Silverlight.
Méthode publique LoadAsync() Charge des éléments de façon asynchrone dans la collection, lorsqu'elle représente la propriété de navigation d'une entité. Pris en charge uniquement par le cliente WCF Data Services 5.0 pour Silverlight.
Méthode publique LoadAsync(IQueryable<T>) Charge des éléments de façon asynchrone dans la collection en exécutant DataServiceQuery<TElement>. Pris en charge uniquement par le cliente WCF Data Services 5.0 pour Silverlight.
Méthode publique LoadNextPartialSetAsync Charge la page de données suivante dans la collection. Pris en charge uniquement par le cliente WCF Data Services 5.0 pour Silverlight.
Méthode protégée MemberwiseClone (hérité de Object.)
Méthode publique Move (hérité de ObservableCollection<T>.)
Méthode protégée MoveItem (hérité de ObservableCollection<T>.)
Méthode protégée OnCollectionChanged (hérité de ObservableCollection<T>.)
Méthode protégée OnPropertyChanged (hérité de ObservableCollection<T>.)
Méthode publique Remove (hérité de Collection<T>.)
Méthode publique RemoveAt (hérité de Collection<T>.)
Méthode protégée RemoveItem (hérité de ObservableCollection<T>.)
Méthode protégée SetItem (hérité de ObservableCollection<T>.)
Méthode publique ToString (hérité de Object.)

Haut de la page

Événements

  Nom Description
Événement public CollectionChanged (hérité de ObservableCollection<T>.)
Événement public LoadCompleted Se produit lorsqu'une opération de chargement asynchrone se termine. Pris en charge uniquement par le cliente WCF Data Services 5.0 pour Silverlight.
Événement protégé PropertyChanged (hérité de ObservableCollection<T>.)

Haut de la page

Implémentations d'interfaces explicites

  Nom Description
Implémentation d'interface expliciteMéthode privée IList.Add (hérité de Collection<T>.)
Implémentation d'interface expliciteMéthode privée IList.Contains (hérité de Collection<T>.)
Implémentation d'interface expliciteMéthode privée ICollection.CopyTo (hérité de Collection<T>.)
Implémentation d'interface expliciteMéthode privée IEnumerable.GetEnumerator (hérité de Collection<T>.)
Implémentation d'interface expliciteMéthode privée IList.IndexOf (hérité de Collection<T>.)
Implémentation d'interface expliciteMéthode privée IList.Insert (hérité de Collection<T>.)
Implémentation d'interface explicitePropriété privée IList.IsFixedSize (hérité de Collection<T>.)
Implémentation d'interface explicitePropriété privée ICollection<T>.IsReadOnly (hérité de Collection<T>.)
Implémentation d'interface explicitePropriété privée IList.IsReadOnly (hérité de Collection<T>.)
Implémentation d'interface explicitePropriété privée ICollection.IsSynchronized (hérité de Collection<T>.)
Implémentation d'interface explicitePropriété privée IList.Item (hérité de Collection<T>.)
Implémentation d'interface expliciteÉvénement privé INotifyPropertyChanged.PropertyChanged (hérité de ObservableCollection<T>.)
Implémentation d'interface expliciteMéthode privée IList.Remove (hérité de Collection<T>.)
Implémentation d'interface explicitePropriété privée ICollection.SyncRoot (hérité de Collection<T>.)

Haut de la page

Notes

Services de données WCF fournit la classe DataServiceCollection<T> pour prendre en charge la liaison des données aux contrôles dans les applications clientes. Cette classe hérite de la classe ObservableCollection<T>, qui implémente l'interface INotifyCollectionChanged et qui est le mécanisme principal de liaison de données pour des applications WPF (Windows Presentation Foundation) et Silverlight.

Vous pouvez charger une collection de liaisons ObservableCollection<T> à l'aide de toute collection qui implémente l'interface IEnumerable<T>. Les éléments chargés dans la collection de liaisons doivent implémenter l'interface INotifyPropertyChanged. Pour plus d'informations, consultez Liaison des données aux contrôles (WCF Data Services).

Exemples

L'exemple suivant provient de la page code-behind d'une page XAML (Extensible Application Markup Language) qui définit la fenêtre SalesOrders dans WPF. Lorsque la fenêtre est chargée, une DataServiceCollection<T> est créée à partir du résultat d'une requête qui retourne des clients avec les objets connexes, filtrés par pays. Ce résultat est lié à la propriété DataContext du StackPanel qui est le contrôle de disposition racine pour la fenêtre 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();
        }
    }
}

Le code suivant est le code XAML qui définit la fenêtre SalesOrders dans WPF pour l'exemple précédent.

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

Sécurité des threads

Tous les membres publics static (Shared dans Visual Basic) de ce type sont thread-safe. Tous les membres de l'instance ne sont pas garantis comme étant thread-safe.

Voir aussi

Référence

Espace de noms System.Data.Services.Client

Autres ressources

Liaison des données aux contrôles (WCF Data Services)