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 | |
---|---|---|
DataServiceCollection<T>() | Crée une instance de la classe DataServiceCollection<T>. | |
DataServiceCollection<T>(IEnumerable<T>) | Crée une instance de la classe DataServiceCollection<T> en fonction de l'exécution de la requête. | |
DataServiceCollection<T>(DataServiceContext) | Crée une instance de la classe DataServiceCollection<T> qui utilise le DataServiceContext spécifié. | |
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é. | |
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é. | |
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. | |
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 | |
---|---|---|
Continuation | Obtient un objet de continuation qui est utilisé pour retourner l'ensemble suivant de résultats paginés. | |
Count | (hérité de Collection<T>.) | |
Item | (hérité de Collection<T>.) | |
Items | (hérité de Collection<T>.) |
Haut de la page
Méthodes
Nom | Description | |
---|---|---|
Add | (hérité de Collection<T>.) | |
BlockReentrancy | (hérité de ObservableCollection<T>.) | |
CheckReentrancy | (hérité de ObservableCollection<T>.) | |
Clear() | (hérité de Collection<T>.) | |
Clear(Boolean) | Supprime tous les éléments de la collection et détache éventuellement tous les éléments du DataServiceContext. | |
ClearItems | (hérité de ObservableCollection<T>.) | |
Contains | (hérité de Collection<T>.) | |
CopyTo | (hérité de Collection<T>.) | |
Detach | Désactive le suivi de DataServiceContext dans tous les éléments de la collection. | |
Equals | (hérité de Object.) | |
Finalize | (hérité de Object.) | |
GetEnumerator | (hérité de Collection<T>.) | |
GetHashCode | (hérité de Object.) | |
GetType | (hérité de Object.) | |
IndexOf | (hérité de Collection<T>.) | |
Insert | (hérité de Collection<T>.) | |
InsertItem | Ajoute un élément spécifié à la collection, à l'index spécifié. (remplace ObservableCollection<T>.InsertItem(Int32, T).) | |
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. | |
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. | |
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. | |
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. | |
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. | |
MemberwiseClone | (hérité de Object.) | |
Move | (hérité de ObservableCollection<T>.) | |
MoveItem | (hérité de ObservableCollection<T>.) | |
OnCollectionChanged | (hérité de ObservableCollection<T>.) | |
OnPropertyChanged | (hérité de ObservableCollection<T>.) | |
Remove | (hérité de Collection<T>.) | |
RemoveAt | (hérité de Collection<T>.) | |
RemoveItem | (hérité de ObservableCollection<T>.) | |
SetItem | (hérité de ObservableCollection<T>.) | |
ToString | (hérité de Object.) |
Haut de la page
Événements
Nom | Description | |
---|---|---|
CollectionChanged | (hérité de ObservableCollection<T>.) | |
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. | |
PropertyChanged | (hérité de ObservableCollection<T>.) |
Haut de la page
Implémentations d'interfaces explicites
Nom | Description | |
---|---|---|
IList.Add | (hérité de Collection<T>.) | |
IList.Contains | (hérité de Collection<T>.) | |
ICollection.CopyTo | (hérité de Collection<T>.) | |
IEnumerable.GetEnumerator | (hérité de Collection<T>.) | |
IList.IndexOf | (hérité de Collection<T>.) | |
IList.Insert | (hérité de Collection<T>.) | |
IList.IsFixedSize | (hérité de Collection<T>.) | |
ICollection<T>.IsReadOnly | (hérité de Collection<T>.) | |
IList.IsReadOnly | (hérité de Collection<T>.) | |
ICollection.IsSynchronized | (hérité de Collection<T>.) | |
IList.Item | (hérité de Collection<T>.) | |
INotifyPropertyChanged.PropertyChanged | (hérité de ObservableCollection<T>.) | |
IList.Remove | (hérité de Collection<T>.) | |
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