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 | |
---|---|---|
DataServiceCollection<T>() | Erstellt eine neue Instanz der DataServiceCollection<T>-Klasse. | |
DataServiceCollection<T>(IEnumerable<T>) | Erstellt auf Grundlage der Abfrageausführung eine neue Instanz der DataServiceCollection<T>-Klasse. | |
DataServiceCollection<T>(DataServiceContext) | Erstellt eine neue Instanz der DataServiceCollection<T>-Klasse, die den angegebenen DataServiceContext verwendet. | |
DataServiceCollection<T>(IEnumerable<T>, TrackingMode) | Erstellt auf Grundlage der Abfrageausführung und mit dem angegebenen Nachverfolgungsmodus eine neue Instanz der DataServiceCollection<T>-Klasse. | |
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. | |
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. | |
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 | |
---|---|---|
Continuation | Ruft ein Fortsetzungsobjekt ab, das verwendet wird, um den nächsten Satz ausgelagerter Ergebnisse zurückzugeben. | |
Count | (Geerbt von Collection<T>.) | |
Item | (Geerbt von Collection<T>.) | |
Items | (Geerbt von Collection<T>.) |
Zum Anfang
Methoden
Name | Beschreibung | |
---|---|---|
Add | (Geerbt von Collection<T>.) | |
BlockReentrancy | (Geerbt von ObservableCollection<T>.) | |
CheckReentrancy | (Geerbt von ObservableCollection<T>.) | |
Clear() | (Geerbt von Collection<T>.) | |
Clear(Boolean) | Entfernt alle Elemente aus der Auflistung und trennt alle Elemente optional vom DataServiceContext. | |
ClearItems | (Geerbt von ObservableCollection<T>.) | |
Contains | (Geerbt von Collection<T>.) | |
CopyTo | (Geerbt von Collection<T>.) | |
Detach | Deaktiviert DataServiceContext-Nachverfolgung aller Elemente in der Auflistung. | |
Equals | (Geerbt von Object.) | |
Finalize | (Geerbt von Object.) | |
GetEnumerator | (Geerbt von Collection<T>.) | |
GetHashCode | (Geerbt von Object.) | |
GetType | (Geerbt von Object.) | |
IndexOf | (Geerbt von Collection<T>.) | |
Insert | (Geerbt von Collection<T>.) | |
InsertItem | Fügt der Auflistung am angegebenen Index ein angegebenes Element hinzu. (Überschreibt ObservableCollection<T>.InsertItem(Int32, T).) | |
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. | |
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. | |
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. | |
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. | |
LoadNextPartialSetAsync | Lädt die nächste Datenseite in die Auflistung. Wird nur vom WCF Data Services 5.0-Client für Silverlight unterstützt. | |
MemberwiseClone | (Geerbt von Object.) | |
Move | (Geerbt von ObservableCollection<T>.) | |
MoveItem | (Geerbt von ObservableCollection<T>.) | |
OnCollectionChanged | (Geerbt von ObservableCollection<T>.) | |
OnPropertyChanged | (Geerbt von ObservableCollection<T>.) | |
Remove | (Geerbt von Collection<T>.) | |
RemoveAt | (Geerbt von Collection<T>.) | |
RemoveItem | (Geerbt von ObservableCollection<T>.) | |
SetItem | (Geerbt von ObservableCollection<T>.) | |
ToString | (Geerbt von Object.) |
Zum Anfang
Ereignisse
Name | Beschreibung | |
---|---|---|
CollectionChanged | (Geerbt von ObservableCollection<T>.) | |
LoadCompleted | Tritt ein, wenn ein asynchroner Ladevorgang abgeschlossen ist. Wird nur vom WCF Data Services 5.0-Client für Silverlight unterstützt. | |
PropertyChanged | (Geerbt von ObservableCollection<T>.) |
Zum Anfang
Explizite Schnittstellenimplementierungen
Name | Beschreibung | |
---|---|---|
IList.Add | (Geerbt von Collection<T>.) | |
IList.Contains | (Geerbt von Collection<T>.) | |
ICollection.CopyTo | (Geerbt von Collection<T>.) | |
IEnumerable.GetEnumerator | (Geerbt von Collection<T>.) | |
IList.IndexOf | (Geerbt von Collection<T>.) | |
IList.Insert | (Geerbt von Collection<T>.) | |
IList.IsFixedSize | (Geerbt von Collection<T>.) | |
ICollection<T>.IsReadOnly | (Geerbt von Collection<T>.) | |
IList.IsReadOnly | (Geerbt von Collection<T>.) | |
ICollection.IsSynchronized | (Geerbt von Collection<T>.) | |
IList.Item | (Geerbt von Collection<T>.) | |
INotifyPropertyChanged.PropertyChanged | (Geerbt von ObservableCollection<T>.) | |
IList.Remove | (Geerbt von Collection<T>.) | |
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