2009-06-22 11 views
1

Ich habe eine ObservableCollection von POCOs (einfache alte CLR-Objekte), die ich in einem Registerkarten-Idiom darstellen möchte. Gibt es eine Möglichkeit, die Sammlung von TabItems an die Anzahl meiner POCO-Sammlung zu binden, wenn Sie das MVVM-Muster verwenden?Silverlight 3 - Dynamische TabItems in TabControl

Also, in diesem Fall, wenn es drei Elemente in meiner Sammlung gibt, würde ich gerne 3 TabItems sehen. Jedes TabItem würde dieselben Steuerelemente am selben Speicherort enthalten, wobei jedes Steuerelement an Eigenschaften des entsprechenden Objekts in der Auflistung gebunden wäre.

Ich bin nur auf der Suche nach einem Überblick über den Ansatz, den ich verwenden könnte oder einen Link zu einem Beispiel. Wenn Sie mehr Informationen benötigen, zögern Sie nicht zu fragen.

Danke.

Antwort

2

Ich würde wahrscheinlich eine ObservableColletion mit Ihren POCO-Elementen darin erstellen. Sie könnten diese ObservableCollection dann mit einem der Silverlight-Element-Rendering-Steuerelemente verknüpfen. Sie müssen die Standard-Rendering-Vorlage ändern, um Ihre Registerkarten zu erstellen ... aber mit dieser Methode sind Ihre Registerkarten immer auf dem neuesten Stand mit den Elementen in der Sammlung, ohne Code in den Code hinter der Datei einfügen zu müssen.

UPDATE

Hier ist ein Link auf die Silverlight-Foren, wo jemand ein TabControl mit der Itemscontrol mit Beispiel XAML-Code gebaut:

http://silverlight.net/forums/t/12271.aspx

... nur ein wenig nach unten scrollen, um zu sehen, die Probe.

+0

Justin; danke für die Antwort. Die POCO-Elemente befinden sich in einer ObservableCollection (ich habe meinen Beitrag entsprechend bearbeitet). Wie würde ich dann diese Sammlung auf eine Weise binden, die TabItems basierend auf der Anzahl der Elemente in der Sammlung generieren würde? –

+0

@Steve - Ich würde wahrscheinlich ein einfaches ItemsControl verwenden, die benutzerdefinierte Vorlage erstellen, um das ItemsControl als Register darzustellen, und dann Ihre ObservableCollection an ItemsControl binden. Die Registerkarten werden basierend auf den Elementen in der Sammlung ordnungsgemäß generiert. –

+0

Justin. Vielen Dank. Ich denke, ich folge der Mehrheit dessen, was du sagst. Kannst du auf ein Beispiel zeigen? Ich denke, ich könnte es schaffen, aber ein Beispiel könnte es schneller vorantreiben. Vielen Dank. –

0

Eine Möglichkeit, dies zu tun, ist die Verwendung eines Wertkonverters (IValueConverter), um Ihre POCO in einem TabItem zurückzugeben. Ich habe ein Beispiel here als Teil einer verwandten Frage gepostet. Es gibt auch eine Beispiel-XAML-Bindung und eine Injektion des ViewModels als Parameter in den Wertkonverter.

/jhd

Verwandte Themen