Forums Neueste Beiträge
 

WPF Treeview - unterschiedliche Füllmethoden

03/07/2009 - 13:52 von Dave Yoda | Report spam
Hallo zusammen,

wenn ich dynamische Daten in einem Treeview darstellen möchte, habe ich
offensichtlich (mindestens) 2 Möglichkeiten:

1) Ich könnte meine Daten einlesen, durchlaufen, jeweils TreeViewItems
erzeugen und in den Baum hàngen (mehr oder weniger wie in WindowsForms)
2) Ich könnte mir hierarchische Datenvorlagen basteln und die eigentliche
Anzeige WPF übernehmen lassen


Welche Methode ist aber in welchem Fall zu bevorzugen? Gibt es irgendwelche
Einschrànkungen bei einer Methode?



Vielen Dank!

Dave
 

Lesen sie die antworten

#1 Frank Dzaebel
04/07/2009 - 09:44 | Warnen spam
Hallo Dave,

wenn ich dynamische Daten in einem Treeview darstellen möchte [...]
Welche Methode ist aber in welchem Fall zu bevorzugen? Gibt es
irgendwelche Einschrànkungen bei einer Methode?



Es kommt ein wenig auf die Art der "Dynamik" an.
Zum Beispiel kann man ggf. Vorteile haben, wenn man
über ein HierarchicalDataTemplate mit Master-Detail-
Binding geht:

[Binding a TreeView to a DataSet « Josh Smith on WPF]
http://joshsmithonwpf.wordpress.com...a-dataset/

wodurch man letztlich einfach den DataContext binden
kann und diesen ggf. dynamisch veràndern:

<TreeView
DataContext="{StaticResource dataSetProvider}"
ItemsSource="{Binding Master}"
ItemTemplate="{StaticResource MasterTemplate}"/>
______________________

Natürlich ginge auch ein einfaches:

<Grid>
<TreeView
Margin="10,10,123,73" Name="TreeView1">
<TreeViewItem Header="Buchstaben">
<TreeViewItem Header="Alpha"></TreeViewItem>
<TreeViewItem Header="Beta"></TreeViewItem>
<TreeViewItem Header="Gamma"></TreeViewItem>
<TreeViewItem Header="Delta"></TreeViewItem>
<TreeViewItem Header="Epsilon"></TreeViewItem>
<TreeViewItem Header="Zeta"></TreeViewItem>
</TreeViewItem>
</TreeView>
<Button Name="btnZufügen"
Height="23" HorizontalAlignment="Right"
Margin="0,12,29,0" VerticalAlignment="Top"
Click="btnZufügen_Click">Zufügen</Button>
</Grid>

nebst:

public Window1()
{
InitializeComponent();
TreeViewItem tvRoot = (TreeViewItem)TreeView1.Items[0];
tvRoot.IsExpanded = true;
}

private void btnZufügen_Click(object sender, RoutedEventArgs e)
{
TreeViewItem tvRoot = (TreeViewItem)TreeView1.Items[0];
TreeViewItem tvLast = (TreeViewItem)tvRoot.Items[tvRoot.Items.Count-1];
if (!tvLast.Header.Equals("Eta"))
{
TreeViewItem tvNeu = new TreeViewItem() { Header = "Eta" };
tvRoot.Items.Add(tvNeu);
btnZufügen.Content = "Herausnehmen";
}
else
{
tvRoot.Items.RemoveAt(tvRoot.Items.Count - 1);
btnZufügen.Content = "Zufügen";
}
}

es kommt

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

Ähnliche fragen