'으로 변환 할 수 없습니다. TreeView
에 경로 목록을 표시하려면 WPF 프로젝트에서 작업하고 있습니다. 내가 propertyPaths 있습니다. : 경로 ID를 가지고 (예 "NetworkControl.AlternateIndexText.Value를)TreeView : 'System.Collections.Generic.IEnumerable <string>'에서 'System.Collections.Generic.IEnumerable
하는 TreeModel
public class MessageElement
{
private int id;
public string Name { get; set; }
public string path { get; set; }
public List<MessageElement> Children { get; set; }
public List<MessageElement> messageElements { get; set; }
public MessageElement()
{
Children = new List<MessageElement>();
messageElements = new List<MessageElement>();
}
public MessageElement(int id, string name, List<MessageElement> children)
{
this.ID = id;
this.Name = name;
this.Children = children;
}
public MessageElement(int id, string path)
{
this.ID = id;
this.path = path;
}
}
일부 데이터
public List<MessageElement> GetRequestTreeNodes()
{
messageElements.Add(new MessageElement(1, "NetworkControl.AlternateIndexText.Value"));
messageElements.Add(new MessageElement(2, "NetworkControl.AddressData.DestinationID"));
messageElements.Add(new MessageElement(2, "NetworkControl.AddressData.MessageOriginatorID.Value"));
messageElements.Add(new MessageElement(3, "VehicleSummary.VehicleIdentification.IdentificationID.Value"));
messageElements.Add(new MessageElement(3, "TitleSummary.JurisdictionTitlingKeyText.Value"));
messageElements.Add(new MessageElement(1, "VehicleSummary.VehicleIdentification.IdentificationID.Value"));
return messageElements;
}을 (를) MOQ
재귀 트리를 만들 :
public List<MessageElement> BuildTree(IEnumerable<MessageElement> messageElements)
{
return (
from element in messageElements // Ex:(1, "NetworkControl.AlternateIndexText.Value")
let elementId = element.id // get id from message element
let splitPath = element.path.Split('.') // get path from message element
group element by element.path.Split('.')[0] into pathElementGroup
select new MessageElement(ID, path)
{
ID = elementId, ?? // id of each path Ex: 1 => "NetworkControl.AlternateIndexText.Value"
Name = pathElementGroup.Key, //name of each tree node to be displayed on tree
Children = BuildTree( //create child from the propertyPath
(from propertyPathElement in pathElementGroup
where propertyPathElement.path.Length > pathElementGroup.Key.Length + 1
select new MessageElement())
.ToList<MessageElement>())
}
);
}
}
재귀 적으로 트리를 만들 수 있도록이 예외를 어떻게 제거 할 수 있습니까?
예외의 전체 메시지를 나열하고 이상적으로 스택 추적을 나열 할 수 있습니까? – svick
@Rob 'MessageElement.BuildTree (System.Collections.Generic.IEnumerable)에 대한 잘못된 오버로드 된 메서드가 있습니다. 잘못된 인수가 있습니다. –
"pathElementGroup"의 데이터 형식은 무엇입니까? – RockWorld