Ich habe dies mit Hilfe von Abe Heidebrecht arbeiten. Vielen Dank an ihn.
Hier ist meine XAML ...
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:PageManager"
Title="Window1" Height="300" Width="300" Name="Window1">
<Grid>
<TreeView Margin="12" Name="TreeViewPages" ItemsSource="{Binding}" TreeViewItem.Expanded="TreeViewPages_Expanded">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Page}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Path=ShortTitle}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Grid>
</Window>
Hier ist meine Visual Basic-Code ...
Class Window1
Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
Dim db As New PageEntities
Dim RootPage = From p In db.Page.Include("Children") _
Where (p.Parent Is Nothing) _
Select p
TreeViewPages.ItemsSource = RootPage
End Sub
Private Sub TreeViewPages_Expanded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
Dim ExpandedTreeViewItem As TreeViewItem = DirectCast(e.OriginalSource, TreeViewItem)
Dim PageId As Guid = DirectCast(ExpandedTreeViewItem.DataContext, Page).Id
Dim db As New PageEntities
Dim ChildPages = From p In db.Page.Include("Children") _
Where p.Parent.Id = PageId _
Select p
ExpandedTreeViewItem.ItemsSource = ChildPages
End Sub
End Class
Wenn die Fenster geladen wird, der Wurzelknoten und seine Kinder aus der Datenbank abgefragt werden und eingefügt in den Baum.
Jedes Mal, wenn ein Knoten erweitert wird, werden die Kinder und Enkel dieses Knotens aus der Datenbank abgefragt und in den Baum eingefügt.
Ihr Bildlink scheint gebrochen zu sein. Wenn Sie immer noch das Originalbild haben, laden Sie es bitte erneut auf stack.imgur hoch oder bearbeiten Sie einfach Ihre Frage, damit es ohne das Bild funktioniert. Vielen Dank. –