Я хочу построить динамическое дерево, вызывая корни и дочерние элементы из приведенных ниже методов. У меня есть TransactionTypeViewModel, который имеет 3 методWPF: Динамическое построение дерева
tranViewModel.GetWSMethodName()
tranViewModel.GetAllRequest()
tranViewModel.GetAllResponse()
У меня есть этот список строки, где мне нужно, чтобы петли через методы и добавить элементы в список строки ниже: Струны будет использоваться для отображения корня и ребенок дерева.
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 };
После того, как я вычищу это, я получаю дублированное дерево. Я не мог найти более простой способ решить эту проблему. Может ли кто-нибудь помочь мне понять?
Вы делаете некоторые очень странные вещи с '' request' и response' переменных, переназначение их несколько раз, и, насколько я могу сказать, на беглый взгляд, установка где 'response.Children' содержит' response'. Это не выглядит так, как будто вы достаточно много думали о структуре данных, которую вы на самом деле строите, и о том, какие шаги вам нужно предпринять, чтобы преобразовать то, что у вас есть, к тому, что вы хотите. Попробуйте «запустить» код шаг за шагом в своей голове и посмотреть, что произойдет. Примечание: почти наверняка есть более простой способ сделать это с помощью LINQ, но сначала вы должны изучить LINQ. –
Спасибо, Мэтью, я знаю, что я делаю это неправильно, но я просто не мог на нее наложить ... О LINQ Я очень к этому знаком. –
Я узнал, в чем моя проблема. Я отправлю решение в ближайшее время. –