Entwickler-Ecke

WPF / Silverlight - TreeViewItem in CodeBehind erstellen?


Christoph1972 - Mo 14.02.11 23:32
Titel: TreeViewItem in CodeBehind erstellen?
Hallo Leute,

ich möchte gerne eine TreeView dynamisch füllen. Ich bekomme aber einfach die TreeViewItems nicht so hin wie ich sie gerne hätte. Leider kann ich meine bisherigen Versuche nicht zeigen, da ich sie nicht hier habe.

Ich habe hier mal exemplarisches Beispiel für einen Button, den inneren Teil des Buttons würde ich gerne mit C# erledigen.


XML-Daten
1:
2:
3:
4:
5:
6:
<Button Name="button1">
    <DockPanel Name="panel1">
        <Image Source="book.png"></Image>
        <TextBlock Text="Test Text"></TextBlock>
    </DockPanel>
</Button>


Der DockPanel soll dann in ein TreeViewItem dargestellt werden.

Könnte bitte jemand so freundlich sein und mir bei der Übersetzung nach C# behilflich sein? Bei Google habe ich immer nur XAML Beispiele gefunden.


Christian S. - Mo 14.02.11 23:58

Hallo!

In WPF ist ja eigentlich der Weg, dass man Daten an ein Control bindet und die Darstellung dann in XAML erledigt, also eine saubere Trennung von Daten und Darstellung. Im C#-Quelltext XAML-Elemente zu erstellen ist eher unüblich.

Bei einem TreeView erledigt man die Darstellung IIRC über ein HierarchicalDataTemplate, welches man dem ItemTemplate des TreeView zuweist.

XML-Daten
1:
2:
3:
4:
5:
<TreeView>
  <TreeView.ItemTemplate>
    <HierarchicalDataTemplate>
  </TreeView.ItemTemplatr>
</TreeView>

Mehr als das Stichwort kann ich Dir leider gerade nicht hinwerfen, solltest damit nicht weiter kommen, kann ich morgen noch mal mehr dazu schreiben.

Grüße
Christian


Christoph1972 - Di 15.02.11 07:59

Guten Morgen!

Also, ich lese Daten ein und je nach dem was da rein kommt, sollen verschiedene Icons und Texte gesetzt werden, dynamisch also. In meinem WPF Buch wird nur erläutert, wie man Items erstellt, das ist aber statisch und somit ziemlich sinnlos. Ich hatte mir gedacht dass ich mit meinem DataReader immer gleich an das gewünschte TreeViewItem binde. Dazu würde ich gerne eine Methode erstellen, die mir ein TreeViewItem mit dem nötigen Icon und dem dazugehörigen Datensatz zurückgibt.


Kha - Di 15.02.11 11:07

Solange du irgendetwas Baumartiges im Speicher hast, kannst du es ohne eine Zeile C# auf ein TreeView abbilden - siehe z.B. http://c-sharp-forum.de/viewtopic.php?p=606331#606331.


Christoph1972 - Di 15.02.11 18:40

Hi,

ich habe in der Hilfe ein Beispiel für das ListView-Control gefunden, dieses beschreibt wie man es annähernd ohne C# macht, das kann ich auch auf das TreeView-Control anwenden.

Besten Dank erst mal!