c# WPF不能进入foreach循环

本文关键字:foreach 循环 WPF 不能 | 更新日期: 2023-09-27 17:49:32

我正在用c# WPF创建一个应用程序:

我已经动态生成了treeview

在那个树视图中,我有一个名为BoekenLijst的TreeViewItem

在那里我生成了像"霍比特人"这样的动态TreeViewItem。书的内容,像"霍比特人",我存储在Content属性的一个Checkbox

所以treeview是这样的

Treeview>
,,节点(BoekenLijst)>
,,,,,《霍比特人》
,,,,,代码完成

我想把选中的TreeViewItem s放在ListBox中,所以我做了以下操作:

 private List<TreeViewItem> GetAllItemContainers(TreeViewItem itemsControl)
    {
        List<TreeViewItem> allItems = new List<TreeViewItem>();
        for (int i = 0; i < itemsControl.Items.Count; i++)
        {
            // try to get the item Container  
            TreeViewItem childItemContainer = itemsControl.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem;
            // the item container maybe null if it is still not generated from the runtime  
            if (childItemContainer != null)
            {
                allItems.Add(childItemContainer);
                List<TreeViewItem> childItems = GetAllItemContainers(childItemContainer);

                foreach (TreeViewItem childItem in childItems)
                {
                    CheckBox checkBoxTemp = childItem.Header as CheckBox;
                    if (checkBoxTemp != null)
                        optieListBox.Items.Add(checkBoxTemp.Content);
                    allItems.Add(childItem);
                }
            }
        }
        return allItems;
    }

问题是,它不会进入:foreach (TreeViewItem childItem in childItems)

有人能帮我一下吗?

c# WPF不能进入foreach循环

您是否尝试过通过Visual Studio调试器运行它?如果你在抛出错误的地方插入断点,那么你应该能够获得正在发生的事情的堆栈跟踪,如果它类似于Eclipse调试器(我有一段时间没有使用VS了),你应该能够单击代码中的任何变量或将鼠标放在它上面,它将在内存中显示该变量的当前值。

但我附和别人的话,试着自己弄清楚,慢慢来,一步一步地解决它。我必须自己学习,但我仍然会出错,因为我总是忘记使用调试器……如果你不相信我,可以问我的组长:-)

Welshboy