WPF学习笔记12. Binding (5)
2010-10-11 16:35:20 来源:本站整理核心提示:10. 数据提供程序(1) XmlDataProviderXmlDataProvider 允许我们直接将 XML 数据作为数据源,我们将前面章节的例子改成 XML 数据岛试试,WPF学习笔记12. Binding (5),注意此时我们已经不需要在代码中定义 Personal、PersonalList 类型,<Wi
10. 数据提供程序
(1) XmlDataProvider
XmlDataProvider 允许我们直接将 XML 数据作为数据源,我们将前面章节的例子改成 XML 数据岛试试,注意此时我们已经不需要在代码中定义 Personal、PersonalList 类型。
<Window x:Class="Learn.WPF.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1"> <Window.Resources> <XmlDataProvider x:Key="personals" XPath="Personals"> <x:XData> <Personals xmlns=""> <Personal Name="Tom" Age="15" Sex="Male" /> <Personal Name="Mary" Age="11" Sex="Female" /> <Personal Name="Jack" Age="12" Sex="Male" /> </Personals> </x:XData> </XmlDataProvider> </Window.Resources> <Grid> <StackPanel DataContext="{StaticResource personals}"> <ListBox x:Name="listbox1" ItemsSource="{Binding XPath=*}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding XPath=@Name}" /> <TextBlock>,</TextBlock> <TextBlock Text="{Binding XPath=@Age}" /> <TextBlock>,</TextBlock> <TextBlock Text="{Binding XPath=@Sex}" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </StackPanel> </Grid> </Window>
在资源中定义 XML 数据岛,注意 "Personals xmlns" 不能省略,另外采用 XPath 进行了绑定操作 (XPath 的语法可参考 MSDN 文档)。除了使用数据岛,我们还以使用 XML 数据文件。
Window1.xaml
<Window x:Class="Learn.WPF.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:my="clr-namespace:Learn.WPF" Title="Window1"> <Window.Resources> <XmlDataProvider x:Key="personals" Source="pack://siteOfOrigin:,,,/Personals.xml" XPath="Personals" /> </Window.Resources> <Grid> <StackPanel DataContext="{StaticResource personals}"> <ListBox x:Name="listbox1" ItemsSource="{Binding XPath=*}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding XPath=@Name}" /> <TextBlock>,</TextBlock> <TextBlock Text="{Binding XPath=@Age}" /> <TextBlock>,</TextBlock> <TextBlock Text="{Binding XPath=@Sex}" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </StackPanel> </Grid> </Window>
赞助商链接