ITypedList Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt Funktionen bereit, mit denen das Schema für eine bindbare Liste ermittelt werden kann, in der für die Bindung verfügbare Eigenschaften von den öffentlichen Eigenschaften des Objekts, an das gebunden werden soll, unterschieden werden.
public interface class ITypedList
public interface ITypedList
type ITypedList = interface
Public Interface ITypedList
- Abgeleitet
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die ITypedList-Schnittstelle implementiert wird. Ein generischer Typ namens SortableBindingList
wird von der BindingList<T>-Klasse abgeleitet und implementiert die ITypedList-Schnittstelle. Eine vollständige Codeauflistung finden Sie unter Vorgehensweise: Implementieren der ITypedList-Schnittstelle.
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Windows.Forms;
using System.Collections;
using System.Reflection;
namespace ITypedListCS
{
[Serializable()]
public class SortableBindingList<T> : BindingList<T>, ITypedList
{
[NonSerialized()]
private PropertyDescriptorCollection properties;
public SortableBindingList() : base()
{
// Get the 'shape' of the list.
// Only get the public properties marked with Browsable = true.
PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(
typeof(T),
new Attribute[] { new BrowsableAttribute(true) });
// Sort the properties.
properties = pdc.Sort();
}
#region ITypedList Implementation
public PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors)
{
PropertyDescriptorCollection pdc;
if (listAccessors!=null && listAccessors.Length>0)
{
// Return child list shape.
pdc = ListBindingHelper.GetListItemProperties(listAccessors[0].PropertyType);
}
else
{
// Return properties in sort order.
pdc = properties;
}
return pdc;
}
// This method is only used in the design-time framework
// and by the obsolete DataGrid control.
public string GetListName(PropertyDescriptor[] listAccessors)
{
return typeof(T).Name;
}
#endregion
}
}
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Windows.Forms
<Serializable()> _
Public Class SortableBindingList(Of Tkey)
Inherits BindingList(Of Tkey)
Implements ITypedList
<NonSerialized()> _
Private properties As PropertyDescriptorCollection
Public Sub New()
MyBase.New()
' Get the 'shape' of the list.
' Only get the public properties marked with Browsable = true.
Dim pdc As PropertyDescriptorCollection = TypeDescriptor.GetProperties(GetType(Tkey), New Attribute() {New BrowsableAttribute(True)})
' Sort the properties.
properties = pdc.Sort()
End Sub
#Region "ITypedList Implementation"
Public Function GetItemProperties(ByVal listAccessors() As System.ComponentModel.PropertyDescriptor) As System.ComponentModel.PropertyDescriptorCollection Implements System.ComponentModel.ITypedList.GetItemProperties
Dim pdc As PropertyDescriptorCollection
If (Not (listAccessors Is Nothing)) And (listAccessors.Length > 0) Then
' Return child list shape
pdc = ListBindingHelper.GetListItemProperties(listAccessors(0).PropertyType)
Else
' Return properties in sort order
pdc = properties
End If
Return pdc
End Function
' This method is only used in the design-time framework
' and by the obsolete DataGrid control.
Public Function GetListName( _
ByVal listAccessors() As PropertyDescriptor) As String _
Implements System.ComponentModel.ITypedList.GetListName
Return GetType(Tkey).Name
End Function
#End Region
End Class
Hinweise
Verwenden Sie diese Schnittstelle, wenn Sie für instance ein DataView -Objekt verwenden, das eine customer
Tabelle darstellt, sie an die Eigenschaften des customer
Objekts binden möchten, das das DataView darstellt, und nicht an die Eigenschaften von DataView.
Diese Schnittstelle ist für die Entwurfszeitunterstützung einer bindungsfähigen Liste nicht erforderlich.
Die Bindung an Daten kann entweder zur Laufzeit oder in einem Designer erfolgen, es gibt jedoch Regeln für beide. Zur Laufzeit können Sie in einer der folgenden Aktionen an Daten binden:
Implementierer von IList, vorausgesetzt, der Implementierer verfügt über eine stark typisierte Item[] Eigenschaft (das heißt, das Type ist alles andere als Object). Sie können dies erreichen, indem Sie die Standardimplementierung von Item[] privat festlegen. Wenn Sie eine IList erstellen möchten, die den Regeln einer stark typisierten Auflistung folgt, sollten Sie von CollectionBaseableiten.
Implementierer von ITypedList.
In einem Designer können Sie die Bindung an Component Objekte initialisieren, indem Sie dieselben Regeln verwenden.
Weitere Informationen zur Bindung an eine Datenquelle finden Sie in der System.Windows.Forms.Binding -Klasse.
Methoden
GetItemProperties(PropertyDescriptor[]) |
Gibt die PropertyDescriptorCollection-Klasse zurück, die die Eigenschaften auf jedem Element darstellt, das zum Binden von Daten verwendet wird. |
GetListName(PropertyDescriptor[]) |
Gibt den Namen der Liste zurück. |