(0) exportieren Drucken
Alle erweitern

ITypedList-Schnittstelle

Aktualisiert: November 2007

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.

Namespace:  System.ComponentModel
Assembly:  System (in System.dll)

public interface ITypedList
public interface ITypedList
public interface ITypedList

Mithilfe dieser Schnittstelle können Sie beispielsweise ein DataView-Objekt, das eine customer-Tabelle darstellt, an die Eigenschaften für das von DataView dargestellte customer-Objekt anstatt an die Eigenschaften von DataView binden.

Diese Schnittstelle wird nicht für die Unterstützung einer bindbaren Liste zur Entwurfszeit benötigt.

Das Binden an Daten kann zur Laufzeit oder in einem Designer erfolgen. In beiden Fällen gelten jedoch bestimmte Regeln. Zur Laufzeit können Sie an Daten aus jedem der folgenden Elemente binden:

  • Array

  • Implementierung von IList, vorausgesetzt, dass die Implementierung über eine Item-Eigenschaft mit starker Typisierung verfügt (d. h., Type ist beliebig, aber nicht Object). Dies erreichen Sie, indem Sie die Standardimplementierung von Item als privat deklarieren. Wenn Sie eine IList erstellen möchten, die den Regeln einer Auflistung mit starker Typisierung folgt, sollte sie von CollectionBase abgeleitet werden.

  • Die Implementierung von ITypedList.

Anhand der gleichen Regeln können Sie die Bindung an Component-Objekte in einem Designer initialisieren.

Weitere Informationen über das Binden an eine Datenquelle finden Sie unter der System.Windows.Forms.Binding-Klasse.

Im folgenden Codebeispiel wird das Implementieren der ITypedList-Schnittstelle veranschaulicht. Ein generischer Typ mit dem Namen SortableBindingList wird von der BindingList<T>-Klasse abgeleitet und implementiert die ITypedList-Schnittstelle. Eine vollständige Codeauflistung finden Sie unter Gewusst wie: 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 = null;

            if (null == listAccessors)
            {
                // Return properties in sort order.
                pdc = properties;
            }
            else
            {
                // Return child list shape.
                pdc = ListBindingHelper.GetListItemProperties(listAccessors[0].PropertyType);
            }

            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
    }
}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC, Xbox 360

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0, 1.0

XNA Framework

Unterstützt in: 2.0, 1.0

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft