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 };
나는이 모든 것을 얻은 후에 중복 트리 뷰를 얻습니다. 이 문제를 해결하는 더 쉬운 방법을 찾을 수 없었습니다. 누군가 나를 이해하도록 도와 줄 수 있습니까?
당신은'request'와'response' 변수로 몇 가지 아주 이상한 일을하고 있습니다. 여러 번 재 지정하고, 내가 할 수있는 한 빨리 설정할 수 있습니다. 'response.Children'이'response'를 포함하고있는 상황을 설명합니다. 당신이 실제로 구축하고있는 데이터 구조에 대해 충분히 생각한 것처럼, 당신이 원하는 것에서 당신이 원하는 것으로 변환하기 위해 취해야 할 조치는 무엇인지 생각하지 않습니다. 머리에서 단계적으로 코드를 '실행'해보고 어떤 일이 일어나는지보십시오. 참고 : LINQ를 사용하여이 작업을 수행하는 것이 가장 쉬운 방법이지만 LINQ를 먼저 배워야합니다. –
Matthew에게 감사드립니다. 나는 그 곳을 잘못하고 있다는 것을 알고 있지만, 나는 그것에 손가락을 대지 못했습니다. LINQ에 관해서 나는 그것에 대해 아주 새롭습니다. –
나는 내 문제가 곧 솔루션을 게시 할 것임을 알게되었습니다. –