數據綁定(六)使用XML數據作為Binding的Source
阿新 • • 發佈:2018-05-24
encoding 分享 article emp spa element HA isp class 原文:數據綁定(六)使用XML數據作為Binding的Source
界面代碼如下:
其中,兩列分別綁定到XPath上
代碼定義了一個XmlDataProvider對象,使用XmlDataProvider對象讀取一個xml文件,可以通過load方法加載一個xml,也可以通過對它的Source屬性賦一個Uri來加載一個網絡上的xml,例如:
運行效果如圖:
運行效果如圖:
.NET Framework提供了兩套處理XML數據的類庫
1. 符合DOM標準的類庫:包括XmlDocument、XmlElement、XmlNode、XmlAttribute等類,這套類庫的特定是中規中矩、功能強大,但也背負了太多XML的傳統和復雜
2. 已LINQ為基礎的類庫:包括XDocument、XElement、XNode、XAttribute等類,這套類庫的特點是可以使用LINQ進行查詢和操作,方便快捷
xml文件內容如下:
<?xml version="1.0" encoding="utf-8" ?> <StudentList> <Student id="1"> <Name>Tim</Name> </Student> <Student id="2"> <Name>Tom</Name> </Student> <Student id="3"> <Name>Vina</Name> </Student> <Student id="4"> <Name>Emily</Name> </Student> </StudentList>
界面代碼如下:
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication1" Title="MainWindow" Height="244" Width="412"> <StackPanel Background="LightBlue"> <ListView x:Name="listViewStudents" Height="130" Margin="5"> <ListView.View> <GridView> <GridViewColumn Header="Id" Width="80" DisplayMemberBinding="{Binding XPath=@id}" /> <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding XPath=Name}" /> </GridView> </ListView.View> </ListView> <Button Content="Load" Click="Button_Click" Height="25" Margin="5, 0" /> </StackPanel> </Window>
其中,兩列分別綁定到XPath上
按鈕的點擊處理代碼如下:
XmlDocument doc = new XmlDocument(); doc.Load("Students.xml"); XmlDataProvider xdp = new XmlDataProvider(); xdp.Document = doc; xdp.XPath = @"/StudentList/Student"; listViewStudents.DataContext = xdp; listViewStudents.SetBinding(ListView.ItemsSourceProperty, new Binding());
代碼定義了一個XmlDataProvider對象,使用XmlDataProvider對象讀取一個xml文件,可以通過load方法加載一個xml,也可以通過對它的Source屬性賦一個Uri來加載一個網絡上的xml,例如:
xdp.Source = new Uri(@"d:\Students.xml")
XmlDataProvider對象的XPath屬性通過一個XPath指定了所有目標元素的路徑
運行效果如圖:
xml數據可以作為線性數據的數據源,也可以用於展現樹形數據結構,界面代碼如下:
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication1" Title="MainWindow" Height="244" Width="412"> <Window.Resources> <XmlDataProvider x:Key="xdp" XPath="FileSystem/Folder"> <x:XData> <FileSystem xmlns=""> <Folder Name="Books"> <Folder Name="Programming"> <Folder Name="Windows"> <Folder Name="WPF" /> <Folder Name="MFC" /> <Folder Name="Delphi" /> </Folder> </Folder> <Folder Name="Tools"> <Folder Name="Development" /> <Folder Name="Designment" /> <Folder Name="Players" /> </Folder> </Folder> </FileSystem> </x:XData> </XmlDataProvider> </Window.Resources> <Grid> <TreeView ItemsSource="{Binding Source={StaticResource ResourceKey=xdp}}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding XPath=Folder}"> <TextBlock Text="{Binding XPath=@Name}" /> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> </Grid> </Window>
運行效果如圖:
數據綁定(六)使用XML數據作為Binding的Source