2011-01-04 5 views
1

Derzeit habe ich ein UserControl, das Sammlungen von Daten in demselben Layout anzeigt. So könnte ein Steuerelement mit einer Sammlung von ObjectA und einem anderen von ObjectB instanziert werden. Ich verwende dann TemplateSelectors, um die richtigen DataTemplates auszuwählen.WPF: TemplateSelectors für verschiedene GridViews

Später dachten wir, wir würden die Liste als GridView einrichten, um mehr Informationen in der Liste selbst anzuzeigen. Jeder Objekttyp hat jedoch unterschiedliche Eigenschaften und die Spalten können unterschiedliche Namen und nicht die gleiche Größe haben. Ich habe dann gemerkt, dass die Spalten und solche, die nicht im ItemTemplate sondern im GridView selbst und in ListView gesetzt sind, natürlich keinen templateselector für sich hat.

Ich war nicht sicher, wie es geht, aber verschiedene Möglichkeiten kamen mir in den Sinn.

1) Es gibt eine Art TemplateSelector-Eigenschaft, die mir nicht bekannt ist.

2) Ich kann es irgendwie auf den ItemTemplateSelector nur nicht weiß wie.

3) Ich könnte das GridView dynamisch machen (könnte schwierig sein und sollte es nicht vermeiden).

Jeder gute Weg, dies zu tun, Tutorials oder ähnliches könnte ich verwenden?

EDIT:

Wie ich ein bisschen mehr über Listview gelernt und es ist View-Eigenschaft Ich bin ziemlich sicher, ich die Gridview in einem Static definieren könnte. Trotzdem würde ich einen ViewSelector oder etwas ähnliches lieben. Ich denke, das war natürlich nicht beabsichtigt, da das Objekt dynamisch sein könnte, während die Sammlung nicht ist.

Aber ich denke über Fälle, in denen es mehr Arten von Ansicht als Gridview (Iconview oder etwas anderes) geben könnte und der Benutzer könnte zwischen ihnen wechseln würde es in irgendeiner Weise implementiert werden müsste.

Die Lösung, die ich kenne, verwendet einen Auslöser und basiert auf dem ersten Element in der Sammlung, aber ich mag das nicht zu viel.

+0

Haben Sie jemals Informationen dazu gefunden? Ich habe die gleichen Anforderungen. – Rob

+0

@Rob Ich habe etwas völlig anderes gemacht, wenn ich mich richtig erinnere. Hier gibt es eine neue Antwort, die Sie vielleicht ausprobieren sollten. Bitte lassen Sie mich wissen, wenn das funktioniert, damit ich es als richtige Antwort markieren kann. –

Antwort

Verwandte Themen