Freigeben über


ITypedList Schnittstelle

Definition

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:

  • Array

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

Gilt für:

Weitere Informationen