Здравствуйте. Может у меня совсем глаз замылился или что … Сделал как в примере у МС но почему то дальше второго уровня узлы не разворачиваются … что не так то??
Пример у МС достаточно простой.
НЕсколько классов со вложенным списком.
Реализовал вот так:
<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 + "}";
}
}
Вроде бы все примитивно, на каждом уровне привязываемся к следующему списку.
на сайте МС список показывает все узлы дерева.
у меня же не дальше второго…
Что я не так сделал то??