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;
}
}
运行效果如下:
<?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;
}
}
运行效果如下:
相关文章推荐
- matlab 窗口布局设置
- hdoj 1556 Color the ball <区间问题,>
- Maven学习:常用mvn命令
- 【MyBatis学习07】动态sql
- WPF中的binding(五)- 使用DataTable作为Binding的源
- 柴俊理金:金银暴涨恐难持久,原油空头死灰复燃
- HTML学习三
- 上拉加载下啦下啦刷新
- 电脑无法上传文件(解决方法)
- 编程词典 - Swift version V1.0
- java中堆和栈的区别,递归和迭代的区别
- jquery 判断selection range 是否在容器中
- ARC Welder——Android 模拟器——App Runtime for Chrome
- moon RTTI --running-time type identification运行时类型确定
- VS代码管理插件AnkhSvn
- 关于Android开发大神的博客汇总
- JAVA中calendar,date,string 的相互转换和详细用法
- struts2 action以及页面跳转
- Android_如何获取Android唯一标识(唯一序列号)
- 数据结构算法模拟系统