1
我想通过调用以下方法的根和子树来构建动态树。 我有有3种方法WPF:动态构建树
tranViewModel.GetWSMethodName()
tranViewModel.GetAllRequest()
tranViewModel.GetAllResponse()
我有串的这个名单,我需要环通的方法和添加项目到我下面的字符串列表TransactionTypeViewModel: 的字符串会被用来显示根和树的孩子。
List<String> wsMethodNameList = new List<String>(); // root of tree from tranViewModel.GetWSMethodName()
List<String> requestXmlList = new List<String>(); // child1 tranViewModel.GetAllRequest()
List<String> responseXmlList = new List<String>(); // child2 tranViewModel.GetAllResponse()
一旦我从每种方法中得到字符串列表,我想构建我的树。
List<TreeViewModel> nodes = getAllTreeNodesFromModel();
var request = new TreeViewModel();
var response = new TreeViewModel();
var parent = new TreeViewModel();
List<TreeViewModel> requestNodes = new List<TreeViewModel>();
for (int i = 0; i < requestXmlList.Count; i++)
{
// requestNodes = new List<TreeViewModel>();
request = new TreeViewModel { Value = requestXmlList[i] };
//requestNodes.Add(request);
request.Children = nodes;
}
List<TreeViewModel> responseNodes = new List<TreeViewModel>();
for (int i = 0; i < responseXmlList.Count; i++)
{
// responseNodes = new List<TreeViewModel>();
response = new TreeViewModel { Value = responseXmlList[i] };
// responseNodes.Add(response);
response.Children = nodes;
}
List<TreeViewModel> parentNode = new List<TreeViewModel>();
for (int i = 0; i < wsMethodNameList.Count; i++)
{
// parentNode = new List<TreeViewModel>();
parent = new TreeViewModel { Value = wsMethodNameList[i] };
// parentNode.Add(parent);
parent.Children.Add(request);
parent.Children.Add(response);
}
return new ObservableCollection<TreeViewModel> { parent };
当我执行这一切后,我得到的是复制treeview。我找不到解决这个问题的更简单的方法。有人能帮助我理解吗?
你正在做一些非常奇怪的事情与你的'request'和'response'变量,多次重新分配他们,只要我能在快看出来,设置发现'response.Children'包含'response'的情况。它并不像我这样认为你已经充分考虑了你实际构建的数据结构,以及你需要采取什么步骤来从你的想法转变到你想要的。尝试在您的脑海中逐步“运行”代码,看看会发生什么。注意:使用LINQ几乎肯定有一种更简单的方法来实现这一点,但您必须先学习LINQ。 –
感谢马修我知道我做错了一些地方,但我不能把我的手指放在它上面..关于LINQ我很新。 –
我发现我的问题是什么,我会尽快发布解决方案。 –