Freigeben über


DataServiceCollection<T>-Klasse

Stellt eine dynamische Entitätsauflistung dar, die Benachrichtigungen bereitstellt, wenn Elemente hinzugefügt oder entfernt werden bzw. wenn die Liste aktualisiert wird.

Vererbungshierarchie

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

Namespace:  System.Data.Services.Client
Assembly:  Microsoft.Data.Services.Client (in Microsoft.Data.Services.Client.dll)

Syntax

'Declaration
Public Class DataServiceCollection(Of T) _
    Inherits ObservableCollection(Of T)
'Usage
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 unterstützt keine generischen Typen und Methoden.

Typparameter

  • T
    Ein Entitätstyp.

Der DataServiceCollection<T>-Typ macht folgende Elemente verfügbar.

Konstruktoren

  Name Beschreibung
Öffentliche Methode DataServiceCollection<T>() Erstellt eine neue Instanz der DataServiceCollection<T>-Klasse.
Öffentliche Methode DataServiceCollection<T>(IEnumerable<T>) Erstellt auf Grundlage der Abfrageausführung eine neue Instanz der DataServiceCollection<T>-Klasse.
Öffentliche Methode DataServiceCollection<T>(DataServiceContext) Erstellt eine neue Instanz der DataServiceCollection<T>-Klasse, die den angegebenen DataServiceContext verwendet.
Öffentliche Methode DataServiceCollection<T>(IEnumerable<T>, TrackingMode) Erstellt auf Grundlage der Abfrageausführung und mit dem angegebenen Nachverfolgungsmodus eine neue Instanz der DataServiceCollection<T>-Klasse.
Öffentliche Methode DataServiceCollection<T>(DataServiceContext, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Erstellt eine neue Instanz der DataServiceCollection<T>-Klasse mit den angegebenen Änderungsmethodendelegaten, die den angegebenen DataServiceContext verwendet.
Öffentliche Methode DataServiceCollection<T>(IEnumerable<T>, TrackingMode, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Erstellt eine neue Instanz der DataServiceCollection<T>-Klasse auf Grundlage der Abfrageausführung und mit den angegebenen Änderungsmethodendelegaten.
Öffentliche Methode DataServiceCollection<T>(DataServiceContext, IEnumerable<T>, TrackingMode, String, Func<EntityChangedParams, Boolean>, Func<EntityCollectionChangedParams, Boolean>) Erstellt eine neue Instanz der DataServiceCollection<T>-Klasse auf Grundlage der Abfrageausführung mit den angegebenen Änderungsmethodendelegaten und verwendet den angegebenen DataServiceContext.

Zum Anfang

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft Continuation Ruft ein Fortsetzungsobjekt ab, das verwendet wird, um den nächsten Satz ausgelagerter Ergebnisse zurückzugeben.
Öffentliche Eigenschaft Count (Geerbt von Collection<T>.)
Öffentliche Eigenschaft Item (Geerbt von Collection<T>.)
Geschützte Eigenschaft Items (Geerbt von Collection<T>.)

Zum Anfang

Methoden

  Name Beschreibung
Öffentliche Methode Add (Geerbt von Collection<T>.)
Geschützte Methode BlockReentrancy (Geerbt von ObservableCollection<T>.)
Geschützte Methode CheckReentrancy (Geerbt von ObservableCollection<T>.)
Öffentliche Methode Clear() (Geerbt von Collection<T>.)
Öffentliche Methode Clear(Boolean) Entfernt alle Elemente aus der Auflistung und trennt alle Elemente optional vom DataServiceContext.
Geschützte Methode ClearItems (Geerbt von ObservableCollection<T>.)
Öffentliche Methode Contains (Geerbt von Collection<T>.)
Öffentliche Methode CopyTo (Geerbt von Collection<T>.)
Öffentliche Methode Detach Deaktiviert DataServiceContext-Nachverfolgung aller Elemente in der Auflistung.
Öffentliche Methode Equals (Geerbt von Object.)
Geschützte Methode Finalize (Geerbt von Object.)
Öffentliche Methode GetEnumerator (Geerbt von Collection<T>.)
Öffentliche Methode GetHashCode (Geerbt von Object.)
Öffentliche Methode GetType (Geerbt von Object.)
Öffentliche Methode IndexOf (Geerbt von Collection<T>.)
Öffentliche Methode Insert (Geerbt von Collection<T>.)
Geschützte Methode InsertItem Fügt der Auflistung am angegebenen Index ein angegebenes Element hinzu. (Überschreibt ObservableCollection<T>.InsertItem(Int32, T).)
Öffentliche Methode Load(IEnumerable<T>) Lädt eine Auflistung von Entitätsobjekten in die Auflistung. Wird vom WCF Data Services 5.0-Client für Silverlight nicht unterstützt.
Öffentliche Methode Load(T) Lädt ein einzelnes Entitätsobjekt in die Auflistung. Wird vom WCF Data Services 5.0-Client für Silverlight nicht unterstützt.
Öffentliche Methode LoadAsync() Lädt Elemente asynchron in die Auflistung, wenn diese die Navigationseigenschaft einer Entität darstellt. Wird nur vom WCF Data Services 5.0-Client für Silverlight unterstützt.
Öffentliche Methode LoadAsync(IQueryable<T>) Lädt die Auflistung asynchron durch die Ausführung einer DataServiceQuery<TElement>. Wird nur vom WCF Data Services 5.0-Client für Silverlight unterstützt.
Öffentliche Methode LoadNextPartialSetAsync Lädt die nächste Datenseite in die Auflistung. Wird nur vom WCF Data Services 5.0-Client für Silverlight unterstützt.
Geschützte Methode MemberwiseClone (Geerbt von Object.)
Öffentliche Methode Move (Geerbt von ObservableCollection<T>.)
Geschützte Methode MoveItem (Geerbt von ObservableCollection<T>.)
Geschützte Methode OnCollectionChanged (Geerbt von ObservableCollection<T>.)
Geschützte Methode OnPropertyChanged (Geerbt von ObservableCollection<T>.)
Öffentliche Methode Remove (Geerbt von Collection<T>.)
Öffentliche Methode RemoveAt (Geerbt von Collection<T>.)
Geschützte Methode RemoveItem (Geerbt von ObservableCollection<T>.)
Geschützte Methode SetItem (Geerbt von ObservableCollection<T>.)
Öffentliche Methode ToString (Geerbt von Object.)

Zum Anfang

Ereignisse

  Name Beschreibung
Öffentliches Ereignis CollectionChanged (Geerbt von ObservableCollection<T>.)
Öffentliches Ereignis LoadCompleted Tritt ein, wenn ein asynchroner Ladevorgang abgeschlossen ist. Wird nur vom WCF Data Services 5.0-Client für Silverlight unterstützt.
Geschütztes Ereignis PropertyChanged (Geerbt von ObservableCollection<T>.)

Zum Anfang

Explizite Schnittstellenimplementierungen

  Name Beschreibung
Explizite SchnittstellenimplementierungPrivate Methode IList.Add (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Methode IList.Contains (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Methode ICollection.CopyTo (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Methode IEnumerable.GetEnumerator (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Methode IList.IndexOf (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Methode IList.Insert (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Eigenschaft IList.IsFixedSize (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Eigenschaft ICollection<T>.IsReadOnly (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Eigenschaft IList.IsReadOnly (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Eigenschaft ICollection.IsSynchronized (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Eigenschaft IList.Item (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivates Ereignis INotifyPropertyChanged.PropertyChanged (Geerbt von ObservableCollection<T>.)
Explizite SchnittstellenimplementierungPrivate Methode IList.Remove (Geerbt von Collection<T>.)
Explizite SchnittstellenimplementierungPrivate Eigenschaft ICollection.SyncRoot (Geerbt von Collection<T>.)

Zum Anfang

Hinweise

WCF Data Services stellt die DataServiceCollection<T>-Klasse bereit, um das Binden von Daten an Steuerelemente in Clientanwendungen zu unterstützen. Diese Klasse erbt von der ObservableCollection<T>-Klasse, die die INotifyCollectionChanged-Schnittstelle implementiert und die der primäre Datenbindungsmechanismus für Windows Presentation Foundation (WPF) und Silverlight-basierte Anwendungen ist.

Sie können eine ObservableCollection<T>-Bindungsauflistung mit jeder Auflistung laden, die die IEnumerable<T>-Schnittstelle implementiert. In die Bindungsauflistung geladene Elemente müssen die INotifyPropertyChanged-Schnittstelle implementieren. Weitere Informationen finden Sie unter Binden von Daten an Steuerelemente (WCF Data Services).

Beispiele

Das folgende Beispiel stammt aus der Code-Behind-Seite für eine XAML (Extensible Application Markup Language)-Seite, die das Fenster SalesOrders in WPF definiert. Wenn das Fenster geladen wird, wird eine DataServiceCollection<T> basierend auf dem Ergebnis einer Abfrage erstellt, die Kunden mit verknüpften Objekten nach Land gefiltert zurückgibt. Dieses Ergebnis wird an die DataContext-Eigenschaft des StackPanel gebunden, der das Stammlayoutsteuerelement für das WPF-Fenster ist.

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();
        }
    }
}

Der folgende XAML-Code definiert das Fenster SalesOrders in WPF für das vorherige Beispiel.

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

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Elemente dieses Typs sind Threadsicher. Für Instanzelemente wird die Threadsicherheit nicht gewährleistet.

Siehe auch

Verweis

System.Data.Services.Client-Namespace

Andere Ressourcen

Binden von Daten an Steuerelemente (WCF Data Services)