我正在尝试从需求列表中创建一个树视图 - 需求列在一个列表中并且类似于" 1.2.1.a_1"和" 1.2.2.b_2"。下面的代码目前是一个很好的树视图,可以创建"要求1"作为一个主要节点,很好" 1.x"作为具有所有要求的子节点很好地列在" 1.x"位。我的问题是我想要更深入 - 为所有" 1.x.x"制作可扩展节点。项目(两个X都是数字) - 所以" 1.2.3.a_1"和" 1.2.3.b_1"在同一父节点或" 1.2.3"。并非所有要求都有第3个非期间字符的数字(即可能存在2.1.a_1)。我对如何实现这一点感到茫然......请帮助。
private void LoadtheNarrativeTreeView() // load up the treeview on the narrative page
{
Narrative_one_Treeview.Items.Clear();
for (int i = 1; i <= 12; i++)
{
TreeViewItem rootnode = new TreeViewItem();
rootnode.Header = "Requirement " + i.ToString();
//TreeNode rootnode = new TreeNode("Requirement " + i.ToString(), 9, 9);
Narrative_one_Treeview.Items.Add(rootnode);
for (int s = 1; s <= 12; s++)
{
bool testsub = (theROC.FieldVariablesList.Exists(x => x.name.StartsWith(i.ToString() + "." + s.ToString())));
if (testsub == false)
{ break; }
List<FieldVariable> clist = new List<FieldVariable>(theROC.FieldVariablesList.Where(x => x.name.StartsWith(i.ToString() + "." + s.ToString())));
FieldVariable firstsub = new FieldVariable(theROC.FieldVariablesList.First(x => x.name.StartsWith(i.ToString() + "." + s.ToString()))); // 1.1, 1.2
TreeViewItem subrootnode = new TreeViewItem() { Header = i.ToString() + "." + s.ToString()};
rootnode.Items.Add(subrootnode);
foreach (FieldVariable FV in clist.ToList())
{
TreeViewItem cnode = new TreeViewItem() { Header = FV.name };
subrootnode.Items.Add(cnode);
}
}
}
}