您的位置:首页 > 其它

WPF中的binding(六)- 使用XML数据作为Binding的源

2016-06-13 08:15 375 查看
首先,定义一个XML文件,存放一组学生的信息,将其存放在D:\Test.XML中,我们把它显示在一个ListView样式中。

<?xml version="1.0" encoding="utf-8"?>
<StudentList>
<Student Id="1">
<Name="张?三¨y"/>
</Student>
<Student Id="2">
<Name="李¤?四?"/>
</Student>
<Student Id="3">
<Name="王ª?五?"/>
</Student>
</StudentList>

XMAL文件如下:
<Window x:Class="_6_20.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListView ItemsSource="{Binding}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="80" DisplayMemberBinding="{Binding XPath=@Id}"/>
<GridViewColumn Header="Name" Width="100" DisplayMemberBinding="{Binding XPath=Name}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>

后台代码如下:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

XmlDocument doc = new XmlDocument();
doc.Load(@"D:\Test.xml");

XmlDataProvider xdp = new XmlDataProvider();
xdp.Document = doc;
xdp.XPath = @"StudentList/Student";

this.listview.DataContext = xdp;
}
}


这里最主要的几点如下:

1、ListView的ItemsSource必须要设置空的Binding,这样设置之后,Binding会自动在listview对象的DataContext中查找默认的集合类对象,并赋值给ItemsSource。

2、DisplayMemberBinding="{Binding XPath=@Id}",使用@符号表示XML元素的Attribute

3、DisplayMemberBinding="{Binding XPath=Name}",没有使用@符号表示XML元素的子元素。

4、特别XmlDataProvider还有一个 Source属性,可以不使用XmlDocument而直接加载XML文件:

以上代码还可写成:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

XmlDataProvider xdp = new XmlDataProvider();
xdp.Source = new System.Uri(@"D:\Test.xml");
xdp.XPath = @"StudentList/Student";

this.listview.DataContext = xdp;
}
}
运行效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: