Проблема с узлами TreeView

Здравствуйте. Может у меня совсем глаз замылился или что … Сделал как в примере у МС но почему то дальше второго уровня узлы не разворачиваются … что не так то??

Пример у МС достаточно простой.

НЕсколько классов со вложенным списком.

Реализовал вот так:

 <TreeView x:Name="tree" HorizontalContentAlignment="Stretch">
            <TreeView.Resources>
                <HierarchicalDataTemplate DataType="{x:Type src:Patient}" ItemsSource="{Binding Path=Children }" >
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition SharedSizeGroup="NameCol" />
                            <ColumnDefinition SharedSizeGroup="IDCol" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Text="{Binding Name}" Margin="5" />
                        <TextBlock Grid.Column="1" Text="2222222" Margin="5" />
                    </Grid>
                </HierarchicalDataTemplate>

                <HierarchicalDataTemplate DataType="{x:Type src:Session}" ItemsSource="{Binding Path=Frags}" >
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition SharedSizeGroup="NameCol" />
                            <ColumnDefinition SharedSizeGroup="IDCol" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Text="{Binding VideoFile}" Margin="5" />
                        <TextBlock Grid.Column="1" Text="0000" Margin="5" />
                    </Grid>                                        
                </HierarchicalDataTemplate>

                <DataTemplate DataType="{x:Type src:Fragment}">
                    <TextBlock Text="{Binding Path=Info}"/>
                </DataTemplate>
            </TreeView.Resources>
        </TreeView>

Вот сам код инициализации:

    public partial class MainWindow : Window
    {
        public List<Patient> DTVIList = new List<Patient>();
        public MainWindow()
        {
            Patient com = new Patient();
            com.Children = new List<Session>() {
                new Session(){ VideoFile = "VideoFile_1" },
                new Session(){ VideoFile = "VideoFile_2" },
                new Session(){ VideoFile = "VideoFile_3" },
                new Session(){ VideoFile = "VideoFile_4" }
            };

            Patient com2 = new Patient();
            com2.Children = new List<Session>() {
                new Session(){ VideoFile = "VideoFile_112" },
                new Session(){ VideoFile = "VideoFile_212" },
                new Session(){ VideoFile = "VideoFile_312" },
                new Session(){ VideoFile = "VideoFile_412" }
            };

            DTVIList.Add(com);
            DTVIList.Add(com2);


            InitializeComponent();

           
            tree.ItemsSource = DTVIList;

            DataContext = this;
        }
    }

    public class Patient
    {
        public string Name { get; set; } = "Ivan";
        public int ID { get; set; } = 1234;
        public string Sex { get; set; } = "Male";
        public DateTime DateBirth { get; set; } = DateTime.Now;
        public DateTime lastVisit { get; set; } = DateTime.Now.AddDays(125);
        public List<Session> Children { get; set; }
    }
    public class Session
    {
        public DateTime Date { get; set; } = DateTime.Now;
        public string VideoFile { get; set; } = "HEll";
        public string Value { get; set; } = "LOOG";

        public List<Fragment> Frags = new List<Fragment>() { new Fragment(), new Fragment() };
    }

    public class Fragment
    {
        public int Length = 2;
        public int Begin = 0;
        public int End = 100;

        public string Info { get { return ToString(); } }

        public override string ToString()
        {
            return "Frag {" + Begin + ", " + End + "}";
        }
    }

Вроде бы все примитивно, на каждом уровне привязываемся к следующему списку.

на сайте МС список показывает все узлы дерева.

у меня же не дальше второго…

Что я не так сделал то??

АААА… нашел косяк. В общем он обращаться может только к свойствам а не к полям.

вот так надо было:

public List<Fragment> Frags { get; set; } ;

А кто знает как теперь заголовки сделать для столбцов?

Скорее всего стандартных способов нет, потому что как он узнает что считать столбцами, и где они находятся, и может быть куча разных типов объектов в любой последовательности.

Тут через ListView сделано: WPF TreeListView Control - CodeProject

Ну да … это вроде работает как надо. Хотя вообще странно почему стандартного нету …