如何将TreeViewItem放入生成的TreeViewItem?
C#:
TreeViewItem treeItem = null; treeItem = new TreeViewItem(); treeItem.Header = "Audit"; foreach (cAuditTransactionTypeEntity tt in _Pot) { char[] charsToTrim = {' ', '\t' }; treeItem.Items.Add(new TreeViewItem() { Header = tt.TransactionType, Name = tt.TransactionType.Replace(" ", "")}); } ToDoList.Items.Add(treeItem);
XAML:
我已将TreeViewItems
添加到TreeView
,如上所示。 现在我需要在每个生成的TreeViewItems
下添加更多项目。 但是,如XAML(也在上面)中所示,新生成的项目尚未添加,因此我无法将它们命名为在代码中引用它们。
treeItem.Items.Add(new TreeViewItem() { Header = tt.TransactionType, Name = tt.TransactionType.Replace(" ", "")});
因此,我在代码的这一部分添加了名称生成。 此外,此尝试失败,仍然无法引用我生成的TreeViewItems
,因为名称仅在运行时生成。
还有另外一种解决方法,还是有另一种方法可以在代码中找到每个生成的TreeViewItems
,然后在它们下面添加新Items
?
您只需要保留对刚创建的TreeViewItem
的引用,并将该项添加到该treeViewItem
TreeViewItem treeItem = null; treeItem = new TreeViewItem(); treeItem.Header = "Audit"; foreach (cAuditTransactionTypeEntity tt in _Pot) { TreeViewItem createdTV ; char[] charsToTrim = {' ', '\t' }; //Keep a reference to the created TreeViewItem createdTV = new TreeViewItem() { Header = tt.TransactionType, Name = tt.TransactionType.Replace(" ", "")} //Create the childs of the createdTreeView foreach (cAuditTransactionTypeEntity otherInfo in _OtherList) { createdTV.Items.Add(new TreeViewItem() { Header = otherInfo.TransactionType, Name = otherInfo.TransactionType.Replace(" ", "")}) ; } treeItem.Items.Add(createdTV); } ToDoList.Items.Add(treeItem);
如果你需要做的是寻找一个特定的孩子并添加项目……
foreach (TreeviewItem objTreeviewItem in ToDoList.Items) { //change to the desired transaction type if ((objTreeviewItem.Header == "TransType")) in your comments { //add the IDs that correspond to the transaction type objTreeviewItem.Items.Add(new TreeViewItem() { Header = child.ID, Name = child.Name}) ; } }
我强烈建议您使用MVVM和分层数据模板,而不是在代码中执行此操作。 如果你不使用MVVM,你将一直对抗WPF。
网上有很好的教程,一个可以在这里找到。