Was ist der Unterschied zwischen der Einstellung von [...].DataSource
auf eine Instanz eines Objekts im Vergleich zum Typ einer Klasse? Ich habe beide Methoden in unserer Codebasis verwendet, und ich versuche zu verstehen, warum es in diesen Fällen so oder so ist.
Wie funktioniert
? %Vor%unterscheidet sich von
%Vor% Wenn im ersten Fall DataSource
als Typ einer Klasse festgelegt wird, was passiert dann, wenn diese Klasse eine Basisklasse ist? Arbeitet die Datenbindung an Eigenschaften, die nur in Klassen vorhanden sind, die von der Basisklasse abstammen? Oder arbeitet die Datenbindung nur an den Klassenmitgliedern des Typs der Klasse, für die ich DataSource
auf gesetzt habe?
Ich habe Schwierigkeiten, meine Google
Suchanfragen zu formulieren, um mir eine Antwort auf diese Frage zu geben. Und das ist entweder, weil dieses Zeug kompliziert ist und ich es nicht richtig formuliere, oder ich verstehe einige der Grundlagen der Datenbindung in C # nicht ganz. Könnte ich helfen, hier in die richtige Richtung zu zeigen? Danke!
Wenn Sie % co_de festlegen % Eigenschaft für einen Typ, an den das Steuerelement mit Elementen dieses Typs an eine leere BindingSource.DataSource
gebunden ist. Daher wird die Datenquelle zunächst keine Elemente enthalten. Wenn Sie andererseits IBindingList
auf eine Sammlung von Elementen festlegen, wird die Datenquelle mit diesen Elementen an ein DataSource
gebunden.
Wenn Sie also einen Typ zuweisen, erhalten Sie eine leere Liste von Elementen, während Sie beim Zuweisen einer Sammlung eine Liste mit Elementen aus der Sammlung erhalten.
Wenn Sie einen Basistyp zuweisen, erhalten Sie eine leere Liste von Basistyp-Elementen. Die Datenbindung "kennt" keine abgeleiteten Klassen.
Wenn Sie die Datenquelle als einen Typ definieren, definieren Sie, welche Art von Typ Sie später behandeln werden. Dies hilft beim Binden von Eigenschaften von diesem Objekt an Elemente im Designer.
Die Einstellung des Wertes wird zu einem späteren Zeitpunkt benötigt, um zu definieren, welche Daten tatsächlich angezeigt werden.
Bearbeiten: Und Sie können nur auf Eigenschaften zugreifen, die sich auf die Klasse beziehen, die Sie behandeln, und nicht auf Elternklassen.
Tags und Links c# data-binding winforms datasource bindingsource