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, um das Schema für eine bindungsfähige Liste zu ermitteln, wobei sich die für die Bindung verfügbaren Eigenschaften von den öffentlichen Eigenschaften des Objekts unterscheiden, an die eine Bindung erfolgen soll.
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 abgeleitet von der BindingList<T> Klasse und implementiert die ITypedList Schnittstelle. Eine vollständige Codeauflistung finden Sie unter How to: Implement the ITypedList Interface.
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace ITypedListCS;
[Serializable()]
public class SortableBindingList<T> : BindingList<T>, ITypedList
{
[NonSerialized()]
readonly 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 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) => 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 z. B. ein DataView Objekt verwenden, das eine customer Tabelle darstellt. Sie möchten eine Bindung an die Eigenschaften des customer Objekts herstellen, das DataView dies darstellt, nicht die Eigenschaften der 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, aber es gibt Regeln für beide. Zur Laufzeit können Sie eine Bindung an Daten in einer der folgenden Aktionen vornehmen:
Implementierer von IList, vorausgesetzt, der Implementierer verfügt über eine stark typierte Item[] Eigenschaft (d. s. dies Type ist alles andere Object). Sie können dies erreichen, indem Sie die Standardimplementierung von Item[] "privat" vornehmen. Wenn Sie ein Objekt IList erstellen möchten, das den Regeln einer stark typierten Auflistung folgt, sollten Sie von CollectionBase.
Implementierer von ITypedList.
In einem Designer können Sie die Bindung an Component Objekte initialisieren, indem Sie die gleichen Regeln verwenden.
Weitere Informationen zum Binden an eine Datenquelle finden Sie in der System.Windows.Forms.Binding Klasse.
Methoden
| Name | Beschreibung |
|---|---|
| GetItemProperties(PropertyDescriptor[]) |
Gibt die PropertyDescriptorCollection Eigenschaften für jedes Element zurück, das zum Binden von Daten verwendet wird. |
| GetListName(PropertyDescriptor[]) |
Gibt den Namen der Liste zurück. |