DanHerbert hat es verstanden. Darn, ich habe auch Stunden damit verbracht! Bei dem Versuch, diese Frage zu beantworten, habe ich eine vereinfachte generische StateManagedCollection entwickelt, die von der integrierten StateManagedCollection des Frameworks basierend auf der Version hier . Vielleicht finden Sie es nützlich. Der vollständige Quellcode meines Beispielprojekts hier .
%Vor%Das zweite Beispiel, das Sie gefunden haben funktioniert fast, es fehlt nur ein bisschen. Alles, was benötigt wurde, waren 2 Methoden in der Hauptsteuerung.
Fügen Sie diesen Code der Datei AppointmentControl.cs
hinzu und es wird funktionieren.
Der Code in der Beispielseite war ziemlich anständig. Es hat alle Schnittstellen implementiert, die es haben sollte, und hat einen ziemlich guten Job gemacht. Wo es auseinanderfiel war, dass, trotz des gesamten Codes, den es in den abstrakten Bits benötigte, dies keine Rolle spielte, weil die Schnittstellen nicht an den Stellen referenziert waren, an denen sie sein mussten.
Die verwendeten Auflistungsklassen hatten nichts "Besonderes" an sich, abgesehen von der Implementierung einiger weniger Schnittstellen. Das Framework ruft diese Methoden nicht automatisch auf. Das Framework wird jedoch die oben beschriebenen überschriebenen Methoden aufrufen, die Sie implementieren müssen, damit Ihr Steuerelement die Elemente in der Sammlung speichern kann. Solange Sie sie anrufen, wird alles funktionieren.
Ich habe den Code über der bereitgestellten Lösung verwendet, ist in Ordnung, aber ich bekam Ausnahme - "StackOverflow" cool :) Das Problem ist reproduzierbar durch Hinzufügen ein paar untergeordneten Elemente in der Aspx-Seite und Wechsel zur Design-Ansicht zur Design-Ansicht von Visual Studio (Visual Studio einfach neustarten und niemand weiß was los ist ....).
%Vor%Also, ich denke, ich habe es herausgefunden, ändere einfach die Implementierung der obigen Methode wie folgt:
%Vor%Hoffe, dass dies jemand anderem wie mir helfen wird :) um nicht ein paar Stunden zu verlieren, um mit dem Designer von VS zu arbeiten