Condividi tramite


Classe DataServiceCollection<T>

Rappresenta una raccolta di entità dinamica che fornisce notifiche in caso di aggiunta o rimozione di elementi oppure quando viene aggiornato l'elenco.

Gerarchia di ereditarietà

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

Spazio dei nomi  System.Data.Services.Client
Assembly:  Microsoft.Data.Services.Client (in Microsoft.Data.Services.Client.dll)

Sintassi

'Dichiarazione
Public Class DataServiceCollection(Of T) _
    Inherits ObservableCollection(Of T)
'Utilizzo
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 non supporta metodi e tipi generici.

Parametri di tipo

  • T
    Tipo di entità.

Nel tipo DataServiceCollection<T> sono esposti i membri seguenti.

Costruttori

  Nome Descrizione
Metodo pubblico DataServiceCollection<T>() Crea una nuova istanza della classe DataServiceCollection<T>.
Metodo pubblico DataServiceCollection<T>(IEnumerable<T>) Crea una nuova istanza della classe DataServiceCollection<T> basata sull'esecuzione di query.
Metodo pubblico DataServiceCollection<T>(DataServiceContext) Crea una nuova istanza della classe DataServiceCollection<T> che utilizza l'oggetto DataServiceContext specificato.
Metodo pubblico DataServiceCollection<T>(IEnumerable<T>, TrackingMode) Crea una nuova istanza della classe DataServiceCollection<T> basata sull'esecuzione di query e con la modalità di rilevamento specificata.
Metodo pubblico DataServiceCollection<T>(DataServiceContext, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Crea una nuova istanza della classe DataServiceCollection<T> con i delegati del metodo di modifica forniti e che utilizza l'oggetto DataServiceContext specificato.
Metodo pubblico DataServiceCollection<T>(IEnumerable<T>, TrackingMode, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Crea una nuova istanza della classe DataServiceCollection<T> basata sull'esecuzione di query e con i delegati del metodo di modifica forniti.
Metodo pubblico DataServiceCollection<T>(DataServiceContext, IEnumerable<T>, TrackingMode, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Crea una nuova istanza della classe DataServiceCollection<T> basata sull'esecuzione di query, con i delegati del metodo di modifica forniti e che utilizza l'oggetto DataServiceContext fornito.

In alto

Proprietà

  Nome Descrizione
Proprietà pubblica Continuation Ottiene un oggetto di continuazione utilizzato per restituire il set successivo di risultati di paging.
Proprietà pubblica Count Ereditato da Collection<T>.
Proprietà pubblica Item Ereditato da Collection<T>.
Proprietà protetta Items Ereditato da Collection<T>.

In alto

Metodi

  Nome Descrizione
Metodo pubblico Add Ereditato da Collection<T>.
Metodo protetto BlockReentrancy Ereditato da ObservableCollection<T>.
Metodo protetto CheckReentrancy Ereditato da ObservableCollection<T>.
Metodo pubblico Clear() Ereditato da Collection<T>.
Metodo pubblico Clear(Boolean) Rimuove tutti gli elementi dalla raccolta e facoltativamente disconnette tutti gli elementi dall'oggetto DataServiceContext.
Metodo protetto ClearItems Ereditato da ObservableCollection<T>.
Metodo pubblico Contains Ereditato da Collection<T>.
Metodo pubblico CopyTo Ereditato da Collection<T>.
Metodo pubblico Detach Disabilita l'oggetto DataServiceContext rilevando tutti gli elementi nella raccolta.
Metodo pubblico Equals Ereditato da Object.
Metodo protetto Finalize Ereditato da Object.
Metodo pubblico GetEnumerator Ereditato da Collection<T>.
Metodo pubblico GetHashCode Ereditato da Object.
Metodo pubblico GetType Ereditato da Object.
Metodo pubblico IndexOf Ereditato da Collection<T>.
Metodo pubblico Insert Ereditato da Collection<T>.
Metodo protetto InsertItem Aggiunge un elemento specificato alla raccolta in corrispondenza dell'indice specificato. Esegue l'override di ObservableCollection<T>.InsertItem(Int32, T).
Metodo pubblico Load(IEnumerable<T>) Carica una raccolta di oggetti entità nella raccolta. Non supportato dal client di WCF Data Services 5.0 per Silverlight.
Metodo pubblico Load(T) Carica un solo oggetto entità nella raccolta. Non supportato dal client di WCF Data Services 5.0 per Silverlight.
Metodo pubblico LoadAsync() Carica elementi nella raccolta in modo asincrono, quando rappresenta la proprietà di navigazione di un'entità. Supportato unicamente dal client di WCF Data Services 5.0 per Silverlight.
Metodo pubblico LoadAsync(IQueryable<T>) Carica la raccolta in modo asincrono eseguendo un oggetto DataServiceQuery<TElement>. Supportato unicamente dal client di WCF Data Services 5.0 per Silverlight.
Metodo pubblico LoadNextPartialSetAsync Carica la pagina successiva di dati nella raccolta. Supportato unicamente dal client di WCF Data Services 5.0 per Silverlight.
Metodo protetto MemberwiseClone Ereditato da Object.
Metodo pubblico Move Ereditato da ObservableCollection<T>.
Metodo protetto MoveItem Ereditato da ObservableCollection<T>.
Metodo protetto OnCollectionChanged Ereditato da ObservableCollection<T>.
Metodo protetto OnPropertyChanged Ereditato da ObservableCollection<T>.
Metodo pubblico Remove Ereditato da Collection<T>.
Metodo pubblico RemoveAt Ereditato da Collection<T>.
Metodo protetto RemoveItem Ereditato da ObservableCollection<T>.
Metodo protetto SetItem Ereditato da ObservableCollection<T>.
Metodo pubblico ToString Ereditato da Object.

In alto

Eventi

  Nome Descrizione
Evento pubblico CollectionChanged Ereditato da ObservableCollection<T>.
Evento pubblico LoadCompleted Si verifica al completamento di un'operazione di caricamento asincrona. Supportato unicamente dal client di WCF Data Services 5.0 per Silverlight.
Evento protetto PropertyChanged Ereditato da ObservableCollection<T>.

In alto

Implementazioni esplicite dell'interfaccia

  Nome Descrizione
Implementazione esplicita dell'interfacciaMetodo privato IList.Add Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaMetodo privato IList.Contains Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaMetodo privato ICollection.CopyTo Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaMetodo privato IEnumerable.GetEnumerator Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaMetodo privato IList.IndexOf Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaMetodo privato IList.Insert Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaProprietà privata IList.IsFixedSize Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaProprietà privata ICollection<T>.IsReadOnly Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaProprietà privata IList.IsReadOnly Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaProprietà privata ICollection.IsSynchronized Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaProprietà privata IList.Item Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaEvento privato INotifyPropertyChanged.PropertyChanged Ereditato da ObservableCollection<T>.
Implementazione esplicita dell'interfacciaMetodo privato IList.Remove Ereditato da Collection<T>.
Implementazione esplicita dell'interfacciaProprietà privata ICollection.SyncRoot Ereditato da Collection<T>.

In alto

Osservazioni

WCF Data Services fornisce la classe DataServiceCollection<T> per supportare l'associazione dei dati ai controlli nelle applicazioni client. Questa classe eredita dalla classe ObservableCollection<T> che implementa l'interfaccia INotifyCollectionChanged ed è il meccanismo di associazione dati primario per applicazioni Windows Presentation Foundation (WPF) e basate su Silverlight.

È possibile caricare una raccolta di associazioni ObservableCollection<T> tramite qualsiasi raccolta che implementa l'interfaccia IEnumerable<T>. Gli elementi caricati nella raccolta di associazioni devono implementare l'interfaccia INotifyPropertyChanged. Per ulteriori informazioni, vedere Associazione di dati a controlli (WCF Data Services).

Esempi

L'esempio seguente è tratto dalla pagina code-behind di una pagina XAML (Extensible Application Markup Language) che definisce la finestra SalesOrders in WPF. Quando la finestra viene caricata, viene creato un oggetto DataServiceCollection<T> in base al risultato di una query che restituisce i clienti con gli oggetti correlati filtrati per paese. Questo risultato viene associato alla proprietà DataContext dell'oggetto StackPanel che rappresenta il controllo di layout radice per la finestra 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();
        }
    }
}

Nel codice XAML seguente viene definita la finestra SalesOrders in WPF per l'esempio precedente.

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

Protezione dei thread

I membri static (Shared in Visual Basic) pubblici di questo tipo sono affidabili. Non è invece garantita la sicurezza dei membri dell'istanza.

Vedere anche

Riferimento

Spazio dei nomi System.Data.Services.Client

Altre risorse

Associazione di dati a controlli (WCF Data Services)