Data Binding im TreeView, unterschiedliche Typen

28/04/2009 - 08:10 von Karsten Stöckmann | Report spam
Hej zusammen,

mangels einer 'dedizierten' XAML Gruppe (zumindest konnte ich hier keine
finden) poste ich das mal hier..

Folgendes Problem:

ich habe eine Struktur etwa dieser Art:

public class ClassA
{
public List<ClassB> B { get; set; }
public List<ClassC> C { get; set; }
}

Nun möchte ich gern ein Objekt von ClassA an einen TreeView binden, so
daß das ganze im View bspw ungefàhr so ausschaut:

objectA
+ objectB_1
+ objectB_2
+ objectC_1

(objectB_1 und objectB_2 beide im Property B, objectC_1 im Property C.
objectA soll im View tatsàchlich die oberste Ebene bilden, und es wird
auch nur ein solches Objekt dargestellt.)

Da ich in ClassA zwei Listen mit Subelementen habe, die auf gleicher
Ebene im Tree unterhalb von objectA erscheinen sollen, ist das natürlich
nicht trivial über ein HierarchicalDataTemplate möglich.

Frage: kann man eine derartige Struktur ohne Änderung am Code der
zugrundeliegenden (darzustellenden) Klassen an einen TreeView binden (dh
nur über entsprechenden Code im XAML)? Wenn ja, wie? Über eine
CompositeCollection ist mir das zB (bisher) nicht gelungen.

Gruß aus BOT
Karsten

PGP Public Key ID 0x708CD1FE (pgpkeys.pca.dfn.de)
"When the light of day is dead, the spark of night ignites"
 

Lesen sie die antworten

#1 Frank Dzaebel
29/04/2009 - 07:27 | Warnen spam
Hallo Karsten,

ich habe eine Struktur etwa dieser Art:
public class ClassA
{ public List<ClassB> B { get; set; }
public List<ClassC> C { get; set; }
}
Nun möchte ich gern ein Objekt von ClassA an einen TreeView binden, so
daß das ganze im View bspw ungefàhr so ausschaut:
objectA
+ objectB_1
+ objectB_2
+ objectC_1



Ich vermute, dass Du etwa den im folgenden dargestellten
Aufbau haben möchtest, er berücksichtigt sogar verschiedene
Anzeige-Templates. Die Daten liegen in einer:
List<Doctor> doctors = new List<Doctor>();
wobei jeder doctor eine "List<Patient>" hat:

[Chris Koenig: Microsoft Developer Evangelist - Hierarchical Databinding in
WPF]
http://blogs.msdn.com/chkoenig/arch...n-wpf.aspx

Das setzt letztlich:
ItemsSource="{Binding Patients}"
oder: ItemsSource="{Binding}"

Es gibt noch viele andere Implementierungsarten.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen