首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将TreeViewItem放入生成的TreeViewItem中?

如何将TreeViewItem放入生成的TreeViewItem中?
EN

Stack Overflow用户
提问于 2013-12-17 16:13:04
回答 2查看 214关注 0票数 3

C#:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<TreeView x:Name="MyTreeView" HorizontalAlignment="Left" Height="430" Margin="381,409,0,0" VerticalAlignment="Top" Width="616">
        <TreeViewItem Name="ToDoList" Header="To Do List" FontSize="20" IsExpanded="True">  
        </TreeViewItem>
    </TreeView>

我已经将TreeViewItems添加到TreeView中,如上面所示。现在,我需要在每个生成的TreeViewItems下添加更多的项。但是,正如XAML (也是上面所示)所示,新生成的项还没有添加,因此我无法命名它们以在代码中引用它们。

代码语言:javascript
复制
treeItem.Items.Add(new TreeViewItem() { Header = tt.TransactionType, Name = tt.TransactionType.Replace(" ", "")});

因此,我在代码的这一部分中添加了一个名称生成。此外,这种尝试失败了,并且仍然不能引用我生成的TreeViewItems,因为名称只能在运行时生成。

还有其他方法可以解决这个问题,还是有另一种方法可以在代码中找到每个生成的TreeViewItems,然后在它们下面添加新的Items

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-17 16:25:55

您只需要保持对刚刚创建的TreeViewItem的引用,并将项目添加到该treeViewItem

代码语言:javascript
复制
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);

如果你要做的是寻找一个特定的孩子并向其中添加项目.

代码语言:javascript
复制
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}) ;
    }

}
票数 3
EN

Stack Overflow用户

发布于 2013-12-17 16:20:53

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

网络上有很好的教程,可以找到这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20639134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档