Entwickler-Ecke

WPF / Silverlight - Dynamisches Tabcontrol


Seeker63 - Do 30.06.16 11:56
Titel: Dynamisches Tabcontrol
Hallo,
ich habe das Internet nun schon ein paar Tage durchsucht und auch einige Beiträge gefunden wie man ein TabControl dynamisch aufbaut. Allerdings möchte ich in den einzelnen Tabs auch verschiedene UserControls anzeigen. Ist das überhaupt möglich oder sollte ich mir dafür eine andere Möglichkeit überlegen?

Vielen Dank für eure Antworten.


Christian S. - Do 30.06.16 11:59

Hallo,

ein UserControl solltest Du genauso wie jedes andere Control ebenfalls dynamisch erzeugen können. Eventuell kannst Du Deine Frage etwas spezifischer stellen? Dann kann man sicherlich auch besser helfen :)

Grüße
Christian


erfahrener Neuling - Do 30.06.16 12:36

Hi,

was spricht gegen

C#-Quelltext
1:
tabpageXY.Controls.Add(...);                    
?


Gruß Julian

EDIT: Ooops gar nicht gesehen, dass es für WPF ist :mrgreen:


Ralf Jansen - Do 30.06.16 12:49

z.B. das es in WPF anders funktioniert als in Winforms.


Seeker63 - Do 30.06.16 15:23

Hallo,
ich meine damit das ich auf Tab1 UserControlA, auf Tab2 UserControlY usw... anzeige. In den ganzen Beispielen die ich im Internet fand wird auf jedem Tab dasselbe UserControl verwendet mit unterschiedlichem ViewModel. Ich möchte aber wirklich unterschiedliche Views anzeigen. Falls dies mit einem TabControl nicht funktioniert was könnte ich dann statt des TabControls verwenden?


Th69 - Do 30.06.16 15:28

Hallo,

klar geht das (auch in WPF). Jedes TabItem hat seinen eigenen Content, s. z.B. Tab Control in WPF [http://www.c-sharpcorner.com/uploadfile/prathore/tab-control-in-wpf/] ("Window1.xaml").


Seeker63 - Sa 02.07.16 16:36

Hallo,

danke für das Beispiel. Doch leider werden in diesem Beispiel die Tabs nicht dynamisch erzeugt sondern in der MainWindow.xaml fest programmiert. Ich weiß das jedes Tab jede Art von Content anzeigen kann. Aber wie mache ich das wenn ich nicht weiß wieviele Tabs ich überhaupt anzeigen will?

Danke


Christian S. - Sa 02.07.16 17:02

Hallo,

also im Code lässt ich ein Tab (TabItem) so erzeugen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
var ti = new TabItem();

ti.Header = "foobar";
ti.Content = new Button();

tabControl.Items.Add(ti);


Dann hast Du ein TabItem mit dem Titel "foobar" in dem genau ein Button ist, der deshalb das gesamte TabItem ausfüllt. Was Du als Content setzt, ist natürlich Dir überlassen.


Dinge der UI im Code zu erzeugen, ist aber nicht so wirklich die Art, wie es in WPF gemacht wird. Schönes ist es mit DataBinding. Dazu müsste man aber mehr dazu wissen, wo die Information liegt, welche TabItems Du erstellen willst und was diese enthalten sollen.

Grüße
Christian