Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
start:visualstudio2019:programmieren:dotnet:component:programmierbeispiele [2021/11/10 17:50]
wikiadmin
start:visualstudio2019:programmieren:dotnet:component:programmierbeispiele [2022/12/19 16:32] (aktuell)
wikiadmin [From IList<T> to DataTable]
Zeile 1: Zeile 1:
 ====== TreeView ====== ====== TreeView ======
  
-{{:start:visualstudio2019:programmieren:dotnet:component:treeview_advance.png?600 | xxx}}+{{ :start:visualstudio2019:programmieren:dotnet:component:treeview_advance.png?600 |}}
  
-{{:start:visualstudio2019:programmieren:dotnet:component:treeview_customtree.png?400 |xxx}} + 
-{{:start:visualstudio2019:programmieren:dotnet:component:treeview_header_template.png?400 |xxx}} +Dieser Artikel beschreibt die Verwendung des TreeView-Steuerelements, das von WPF bereitgestellt wird.  
-{{:start:visualstudio2019:programmieren:dotnet:component:treeview_simpletree.png?400 |xxx}}+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. 
 +[[https://www.codeproject.com/articles/124644/basic-understanding-of-tree-view-in-wpf|Basic Understanding of Tree View in WPF]] 
 + 
 +==== Einfacher Datenbaum erstellen ==== 
 +{{ :start:visualstudio2019:programmieren:dotnet:component:treeview_simpletree.png?200 |}} 
 +Um einen einfachen Datenbaum zu erstellen benötigen man lediglich eine Treeview Komponente und etwas XAML Code. 
 + 
 +<code c# [enable_line_numbers="true",highlight_lines_extra="1"]> 
 +#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> 
 +</code> 
 + 
 +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. 
 + 
 +<code c# [enable_line_numbers="true",highlight_lines_extra="1"]> 
 +#XAML 
 +<TreeView Name="tvMain"> 
 +</TreeView> 
 +</code> 
 +<code c# [enable_line_numbers="true",highlight_lines_extra="1"]> 
 +#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); 
 +</code> 
 +----- 
 + 
 +==== Angepasster Datenbaum erstellen ==== 
 +{{ :start:visualstudio2019:programmieren:dotnet:component:treeview_header_template.png?200 |}} 
 +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.  
 +<code c# [enable_line_numbers="true",highlight_lines_extra="1"]> 
 +#XAML 
 +<TreeView> 
 + 
 +</TreeView> 
 +</code> 
 + 
 +----- 
 + 
 +==== xxx Datenbaum erstellen ==== 
 +{{ :start:visualstudio2019:programmieren:dotnet:component:treeview_customtree.png?200 |}} 
 + 
 +<code c# [enable_line_numbers="true",highlight_lines_extra="1"]> 
 +#XAML 
 +<TreeView> 
 + 
 +</TreeView> 
 +</code> 
 + 
 + 
 + 
 +---- 
 +====== 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. 
 + 
 +[[https://social.msdn.microsoft.com/Forums/vstudio/en-US/6ffcb247-77fb-40b4-bcba-08ba377ab9db/converting-a-list-to-datatable?forum=csharpgeneral|Example A]] 
 +[[https://stackoverflow.com/questions/701223/net-convert-generic-collection-to-datatable|Example B]] 
 +==== From IList<T> to DataTable ==== 
 + 
 +<code c# [enable_line_numbers="true",highlight_lines_extra="12"]> 
 +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; 
 + 
 +    } 
 +</code>