tags:

views:

68

answers:

1

I have an object with child object(s) and I load it using linq. And I assign it to a treeView's itemssource.

treeView.DisplayMemberPath = "Name";
treeView.ItemsSource = tasks;

It shows only the parent nodes (task.name), I couldn't figure out how to add children (TaskItems.name). All the examples show HierarchicalData in xaml. I need to do it in code-behind, just like the above code. Is it possible?


public class Task
{
        public int Id;
        public string Name;
        public bool IsActive;

        public List<TaskItem> TaskItems = new List<TaskItem>();
}

public class TaskItem
{
        public int TaskId;
        public string Name;
        public string Value;
}

--------------

var tasks1 = from t in xd.Descendants("taskheader")
            select new Task
            {
                Id = (int)t.Element("id"),
                Name = t.Element("name").Value,
                IsActive = t.Element("isactive").Value == "1",
                TaskItems = t.Elements("taskdetail").Select(e => new TaskItem
                {
                    TaskId = (int)e.Element("taskid"),
                    Name = (string)e.Element("name"),
                    Value = (string)e.Element("value"),
                }).ToList()
            };

--------------
List<Task> tasks = new List<Task>();
tasks = tasks1;

A: 

You can create a HierarchicalDataTemplate in code and assign it to the treeView.ItemTemplate property. That really is the best way of going about this, as well as the "right" WPF way.

Charlie