Metainformationen zur Seite
TreeView
Dieser Artikel beschreibt die Verwendung des TreeView-Steuerelements, das von WPF bereitgestellt wird. Auf diesem Weg will ich Ihnen aufzeigen, wie man einen einfachen Tree, eine Vorlage und eine Bindung dazu erstellt. Dieser Bericht konzentriert sich hauptsächlich darauf, wie man Inhalte in einem Treeview anzeigt. Diese Vorstellung ist eine Abschrift aus dem folgenden Code Project Bericht. Basic Understanding of Tree View in WPF
Einfacher Datenbaum erstellen
Um einen einfachen Datenbaum zu erstellen benötigen man lediglich eine Treeview Komponente und etwas XAML Code.
#XAML <TreeView> <TreeViewItem Header="North America"> <TreeViewItem Header="USA"></TreeViewItem> <TreeViewItem Header="Canada"></TreeViewItem> <TreeViewItem Header="Mexico"></TreeViewItem> </TreeViewItem> <TreeViewItem Header="South America"> <TreeViewItem Header="Argentina"></TreeViewItem> <TreeViewItem Header="Brazil"></TreeViewItem> <TreeViewItem Header="Uruguay"></TreeViewItem> </TreeViewItem> </TreeView>
Dieser Datenbaum lässt sich auch mit C# Code erstellen. Dazu muss ein Treeview mit einem Namen erstellt werden. An dieses benannte Treeview Objekt kann dann benutzt werden um weiter Treeviewitem hinzu zu fügen.
#XAML <TreeView Name="tvMain"> </TreeView>
#C# TreeViewItem treeItem = null; // North America treeItem = new TreeViewItem(); treeItem.Header = "North America"; treeItem.Items.Add(new TreeViewItem() { Header = "USA" }); treeItem.Items.Add(new TreeViewItem() { Header = "Canada" }); treeItem.Items.Add(new TreeViewItem() { Header = "Mexico" }); tvMain.Items.Add(treeItem);
Angepasster Datenbaum erstellen
Wenn Sie einige andere Steuerelemente mit dem Inhalt z.B. Checkbox, Bild, etc. hinzufügen möchten, dann können Sie Ihren Baum ohne großen Aufwand gestalten. Sie müssen nur das HeaderTemplate des TreeViewItem anpassen. Sie können auch eine Klasse erstellen, die von TreeViewItem abgeleitet ist, und den Header entsprechend Ihren Anforderungen ändern.
#XAML <TreeView> </TreeView>
xxx Datenbaum erstellen
DataTable and DataSet
Das folgende Beispiel soll ein List Objekt in eine Datentabelle umwandeln. Ein generische Lösungsansatz ermöglicht es alle Eigenschaften und nur deren Eigenschaften, in eine Datentabelle umzuwandeln. Da die Eingenschaften auch NULL sein können muss dies bei der Konvertierung berücksichtigt werden.
The following example is to convert a List object into a data table. A generic approach allows to convert all properties and only their properties into a data table. Since the properties can also be NULL, this must be taken into account during the conversion.
From IList<T> to DataTable
public DataTable ConvertToDataTable<T>(IList<T> data) { PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T)); DataTable table = new DataTable(); foreach (PropertyDescriptor prop in properties) table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType); foreach (T item in data) { DataRow row = table.NewRow(); foreach (PropertyDescriptor prop in properties) row[prop.Name] = prop.GetValue(item) ?? DBNull.Value; table.Rows.Add(row); } return table; }