Вы можете определить TreeView
в UWP XAML следующим образом: здесь :
<TreeView ItemsSource="{x:Bind ListOfStudents}">
<TreeView.ItemTemplate>
<DataTemplate x:DataType="model:Student">
<TreeViewItem ItemsSource="{x:Bind homeworks}"
Content="{x:Bind Name}"/>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Затем вам нужно будет определить DataTemplate
для каждого класса, который выожидать отображения. Добавьте это в TreeView
XAML:
<TreeView.Resources>
<DataTemplate x:DataType="model:ScienceH">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Date}" />
<TextBlock Text="{Binding Vote}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:DataType="model:PhysicsH ">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Date}" />
<TextBlock Text="{Binding Vote}" />
<TextBlock Text="{Binding Points}" />
</StackPanel>
</DataTemplate>
</TreeView.Resources>
Вы также можете прочитать больше о DataTemplate
class здесь .
Обратите внимание, что, как предлагается вкомментарии, вам нужно реализовать уведомления об изменениях в ваших классах, чтобы обеспечить правильную привязку. Это все подробно здесь .
В качестве альтернативы, у вас, похоже, есть TreeView
с древовидной структурой известной фиксированной глубины: глубина 0 будет списком Student
и глубиной1 будет список Homework
, так что вы также можете обойтись без TreeView
и просто вложить два ItemsControl
друг в друга.