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 | |
---|---|---|
DataServiceCollection<T>() | Crea una nuova istanza della classe DataServiceCollection<T>. | |
DataServiceCollection<T>(IEnumerable<T>) | Crea una nuova istanza della classe DataServiceCollection<T> basata sull'esecuzione di query. | |
DataServiceCollection<T>(DataServiceContext) | Crea una nuova istanza della classe DataServiceCollection<T> che utilizza l'oggetto DataServiceContext specificato. | |
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. | |
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. | |
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. | |
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 | |
---|---|---|
Continuation | Ottiene un oggetto di continuazione utilizzato per restituire il set successivo di risultati di paging. | |
Count | Ereditato da Collection<T>. | |
Item | Ereditato da Collection<T>. | |
Items | Ereditato da Collection<T>. |
In alto
Metodi
Nome | Descrizione | |
---|---|---|
Add | Ereditato da Collection<T>. | |
BlockReentrancy | Ereditato da ObservableCollection<T>. | |
CheckReentrancy | Ereditato da ObservableCollection<T>. | |
Clear() | Ereditato da Collection<T>. | |
Clear(Boolean) | Rimuove tutti gli elementi dalla raccolta e facoltativamente disconnette tutti gli elementi dall'oggetto DataServiceContext. | |
ClearItems | Ereditato da ObservableCollection<T>. | |
Contains | Ereditato da Collection<T>. | |
CopyTo | Ereditato da Collection<T>. | |
Detach | Disabilita l'oggetto DataServiceContext rilevando tutti gli elementi nella raccolta. | |
Equals | Ereditato da Object. | |
Finalize | Ereditato da Object. | |
GetEnumerator | Ereditato da Collection<T>. | |
GetHashCode | Ereditato da Object. | |
GetType | Ereditato da Object. | |
IndexOf | Ereditato da Collection<T>. | |
Insert | Ereditato da Collection<T>. | |
InsertItem | Aggiunge un elemento specificato alla raccolta in corrispondenza dell'indice specificato. Esegue l'override di ObservableCollection<T>.InsertItem(Int32, T). | |
Load(IEnumerable<T>) | Carica una raccolta di oggetti entità nella raccolta. Non supportato dal client di WCF Data Services 5.0 per Silverlight. | |
Load(T) | Carica un solo oggetto entità nella raccolta. Non supportato dal client di WCF Data Services 5.0 per Silverlight. | |
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. | |
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. | |
LoadNextPartialSetAsync | Carica la pagina successiva di dati nella raccolta. Supportato unicamente dal client di WCF Data Services 5.0 per Silverlight. | |
MemberwiseClone | Ereditato da Object. | |
Move | Ereditato da ObservableCollection<T>. | |
MoveItem | Ereditato da ObservableCollection<T>. | |
OnCollectionChanged | Ereditato da ObservableCollection<T>. | |
OnPropertyChanged | Ereditato da ObservableCollection<T>. | |
Remove | Ereditato da Collection<T>. | |
RemoveAt | Ereditato da Collection<T>. | |
RemoveItem | Ereditato da ObservableCollection<T>. | |
SetItem | Ereditato da ObservableCollection<T>. | |
ToString | Ereditato da Object. |
In alto
Eventi
Nome | Descrizione | |
---|---|---|
CollectionChanged | Ereditato da ObservableCollection<T>. | |
LoadCompleted | Si verifica al completamento di un'operazione di caricamento asincrona. Supportato unicamente dal client di WCF Data Services 5.0 per Silverlight. | |
PropertyChanged | Ereditato da ObservableCollection<T>. |
In alto
Implementazioni esplicite dell'interfaccia
Nome | Descrizione | |
---|---|---|
IList.Add | Ereditato da Collection<T>. | |
IList.Contains | Ereditato da Collection<T>. | |
ICollection.CopyTo | Ereditato da Collection<T>. | |
IEnumerable.GetEnumerator | Ereditato da Collection<T>. | |
IList.IndexOf | Ereditato da Collection<T>. | |
IList.Insert | Ereditato da Collection<T>. | |
IList.IsFixedSize | Ereditato da Collection<T>. | |
ICollection<T>.IsReadOnly | Ereditato da Collection<T>. | |
IList.IsReadOnly | Ereditato da Collection<T>. | |
ICollection.IsSynchronized | Ereditato da Collection<T>. | |
IList.Item | Ereditato da Collection<T>. | |
INotifyPropertyChanged.PropertyChanged | Ereditato da ObservableCollection<T>. | |
IList.Remove | Ereditato da Collection<T>. | |
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