Mając przykładowe dane w pliku Countries.xml:
<?xml version="1.0" encoding="utf-8" ?> <Countries> <Country Name="Poland"> <CapitalCity>Warsaw</CapitalCity> <Voivodeships> <Voivodeship Name="Masovian"> <Cities> <City>Plock</City> <City>Radom</City> <City>Warsaw</City> </Cities> </Voivodeship> <Voivodeship Name="Lesser Poland"> <Cities> <City>Cracow</City> <City>Tarnow</City> </Cities> </Voivodeship> <Voivodeship Name="Greater Poland"> <Cities> <City>Kalisz</City> <City>Poznan</City> </Cities> </Voivodeship> </Voivodeships> </Country> </Countries>
Możemy do resourców dodać XmlProvider z ścieżką do pliku.
<XmlDataProvider Source="Countries.xml" XPath="Countries" x:Key="MyProvider" />
A następnie, również w resourcach dodać hierarchiczny szablon danych.
<HierarchicalDataTemplate DataType="Countries" ItemsSource="{Binding XPath=*}"> <TextBlock Text="Countries" /> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="Country" ItemsSource="{Binding XPath=*}"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding XPath=@Name}" /> <TextBlock Text=", Capital City : " /> <TextBlock Text="{Binding XPath=CapitalCity}" /> </StackPanel> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="Voivodeships" ItemsSource="{Binding XPath=*}"> <TextBlock Text="Voivodeships :" /> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="Voivodeship" ItemsSource="{Binding XPath=*}"> <TextBlock Text="{Binding XPath=@Name}" /> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="Cities" ItemsSource="{Binding XPath=*}"> <TextBlock Text="Cities" /> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="City" > <TextBlock Text="{Binding XPath=.}" /> </HierarchicalDataTemplate>
Ostatecznie możemy zbindować dane z providera do kontrolki TreeView.
<TreeView ItemsSource="{Binding Source={StaticResource ResourceKey=MyProvider}, XPath=.}" />
I tym sposobem możemy przeglądać drzewo z naszymi danymi zapisanymi w takiej hierarchii, jak w pliku XML
Brak komentarzy:
Prześlij komentarz