Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将树视图项放入生成的树视图项中?_C#_Wpf_Xaml_Treeview_Treeviewitem - Fatal编程技术网

C# 如何将树视图项放入生成的树视图项中?

C# 如何将树视图项放入生成的树视图项中?,c#,wpf,xaml,treeview,treeviewitem,C#,Wpf,Xaml,Treeview,Treeviewitem,C#: XAML: 因此,我在代码的这一部分添加了名称生成。此外,此尝试失败,仍然无法引用生成的TreeViewItemsI,因为名称仅在运行时生成 有没有其他方法可以解决这个问题,或者有没有其他方法可以在代码中找到这些生成的treeviewitem,然后在它们下面添加新的项?我强烈建议您使用和分层数据模板,而不是在代码中这样做。如果您不使用MVVM,您将一路与WPF抗争 网上到处都有很好的教程,可以找到 您只需保留对刚刚创建的treevieItem的引用,并将项目添加到该treevieItem

C#:

XAML:

因此,我在代码的这一部分添加了名称生成。此外,此尝试失败,仍然无法引用生成的
TreeViewItems
I,因为名称仅在运行时生成


有没有其他方法可以解决这个问题,或者有没有其他方法可以在代码中找到这些生成的
treeviewitem
,然后在它们下面添加新的
项?

我强烈建议您使用和分层数据模板,而不是在代码中这样做。如果您不使用MVVM,您将一路与WPF抗争


网上到处都有很好的教程,可以找到

您只需保留对刚刚创建的
treevieItem
的引用,并将项目添加到该treevieItem中即可

treeItem.Items.Add(new TreeViewItem() { Header = tt.TransactionType, Name = tt.TransactionType.Replace(" ", "")});
如果你需要做的是寻找一个特定的孩子,并添加项目到它

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);

向有上述问题的人建议MVVM似乎是在使用巴祖卡杀死蚊子,如果他在解决这个问题的第二天就放弃WPF,那么是的。如果他想有效地使用WPF,那么就不要了。谢谢你的回复,而不是在之前生成的每个项目下重复添加所有新项目。我需要指定新项目需要放在哪个项目下。例如,某些ID必须位于某些TransactionType下。我知道如何指定新项目需要位于哪个项目下,我只需要知道如何获取生成的单个项目之一。
treeItem.Items.Add(new TreeViewItem() { Header = tt.TransactionType, Name = tt.TransactionType.Replace(" ", "")});
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}) ;
    }

}