2009-07-22 15 views
2

Ich mache einige Sachen in WPF.WPF Load Control Frage

Ich habe eine ComboBox mit vielen Typen. Nach der Auswahl eines konkreten Typs möchte ich Laden eines bestimmten UserControl (mit vielen TextBoxes etc.) unter Berücksichtigung des Typs in einer definierten Region in meinem WPF-Fenster.

Wie geht das? Gibt es etwas wie LoadControl() und laden Sie es in ASP.NET in PlaceHolder? Und was ist der beste Weg, dies zu tun?

Danke.

Antwort

2

Sie sollten für jeden Typ einen DataTemplate erstellen. Weitere Informationen finden Sie unter Different item template for each item in a WPF List.

+0

Nun Ok ich kann viele DataTemplate definieren und mit Selektor entscheiden, für welchen Artikel welche Vorlage angezeigt werden soll. Vielen Dank! –

+0

Aber es gibt ein anderes Problem. Diese ComboBox befindet sich direkt in der Vorlage, da sie Teil dieses Elements ist. Das bedeutet, dass Sie beim Hinzufügen ein Element aus dieser Combobox auswählen und das Element sich selbst in ein anderes DataTemplate ändert. Aber ich möchte den Zustand dieser ComboBox erhalten. Aber nach dem Laden eines neuen DataTemplate ist es verloren. Irgendeine Idee? –

+0

Es sieht seltsam aus, dass die ComboBox Teil des DataTemplate ist. Sie sagen in Ihrer Frage, dass ein UserControl in einer 'definierten Region' des Fensters angezeigt werden soll. Es sollte in den Ressourcen dieser definierten Region sein, dass Sie für jeden Typ unterschiedliche Vorlagen definieren sollten. Außerdem müssen Sie kein UserControl "laden", das wird automatisch für Sie erledigt. Wenn es etwas gibt, das ich nicht erhalten habe, geben Sie bitte einen Code an, um Ihr Problem besser zu veranschaulichen. –

1

Was:

object o = Activator.CreateInstance(type); 
myUserControl.PubliclyExposedContainer.Content = o; 

Nicht wirklich sicher, warum Sie sich die Mühe der Schaffung eines Datatemplate für jeden Typ gehen würde.