WPF数据绑定(四)

摘要:
TextBlockText=“{BindingPath=Id}”/>TextBlockText=“{BindingPath=名称}”/>TextBlockText=“{BindingPath=年龄}”/>11newStudent(){Id=“5”,13lisboxDataTemplatebinding.ItemsSource=stus;Idname和age。

1、DataTemplate

上一部分已经讲了itemsource绑定,功能虽然实现了但是还是有点土,内容太单一了,如果能够修改listbox的界面,让更多的元素展示出来就完美了。

DataTemplate就可以实现这个。

WPF数据绑定(四)第1张

 1             <TabItem Header="DataTemplate">
 2                 <ListBox Name="lisboxDataTemplatebinding">
 3                     <ListBox.ItemTemplate>
 4                         <DataTemplate>
 5                             <StackPanel Orientation="Horizontal">
 6                                 <TextBlock Text="{Binding Path=Id}"/>
 7                                 <TextBlock Text="{Binding Path=Name}"/>
 8                                 <TextBlock Text="{Binding Path=Age}"/>
 9                             </StackPanel>
10                         </DataTemplate>
11                     </ListBox.ItemTemplate>
12                 </ListBox>
13                 
14             </TabItem>
 1     public partial class MainWindow : Window
 2     {
 3         private void DataTemplateBinding()
 4         {
 5             List<Student> stus = new List<Student>()
 6             {
 7                 new Student(){Id="1", Name="Tom", Age="15"},
 8                 new Student(){Id="2", Name="Jim", Age="15"},
 9                 new Student(){Id="3", Name="Lily", Age="15"},
10                 new Student(){Id="4", Name="Lucy", Age="15"},
11                 new Student(){Id="5", Name="Tim", Age="15"}
12             };
13             lisboxDataTemplatebinding.ItemsSource = stus;
14         }
15     }

DataTemplate就好比是数据的外衣,它能够决定数据是用什么样的方式展示出来,这里我们展示了三个数据,Id name 和age,将这三个数据分别绑定到一个textblock控件上,而这三个textblock放在一个stackpanel中,组成了listbox的以一个item。

在XAML中将每一个textblock绑定的path设定好,在代码里面设定listbox的itemsource。

2、XML绑定

C#可以直接从XML读取数据,并且展示出来

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <students>
 3   <student Id="1">
 4     <Name>Tom</Name>
 5   </student>
 6   <student Id="2">
 7     <Name>Lucy</Name>
 8   </student>
 9   <student Id="3">
10     <Name>Lily</Name>
11   </student>
12   <student Id="4">
13     <Name>Jim</Name>
14   </student>
15   <student Id="5">
16     <Name>Tim</Name>
17   </student>
18   <student Id="6">
19     <Name>Tony</Name>
20   </student>
21 </students> 
 1             <TabItem Header="XML">
 2                 <StackPanel>
 3                     <ListView Name="listviewXML">
 4                         <ListView.View>
 5                             <GridView>
 6                                 <GridViewColumn Header="ID" DisplayMemberBinding="{Binding XPath=@Id}"/>
 7                                 <GridViewColumn Header="Name" DisplayMemberBinding="{Binding XPath=Name}"/>
 8                             </GridView>
 9                         </ListView.View>
10                     </ListView>
11                     <Button Content="Load XML" Click="ButtonXML_Click_1" />
12                 </StackPanel>
13             </TabItem>
 1     public partial class MainWindow : Window
 2     {
 3         private void ButtonXML_Click_1(object sender, RoutedEventArgs e)
 4         {
 5             XmlDataProvider xpd = new XmlDataProvider();
 6             xpd.Source = new Uri(@"..\..\StuInfo.xml",UriKind.Relative);
 7             xpd.XPath = @"/students/student";
 8 
 9             listviewXML.DataContext = xpd;
10             listviewXML.SetBinding(ListView.ItemsSourceProperty, new Binding());
11         }
12     }

XML数据绑定需要使用XmlDataProvider类,同样的,数据绑定需要配置好source和path两个类,因为是XML所以这里使用的是Xpath,可以很方便的帮助我们定位到需要的元素,关于Xpath的相关知识可以点击这里:http://www.w3school.com.cn/xpath/index.asp

<GridViewColumn Header="ID" DisplayMemberBinding="{Binding XPath=@Id}"/>

<GridViewColumn Header="Name" DisplayMemberBinding="{Binding XPath=Name}"/>

注意这两句, XPath=@Id和XPath=Name,@表示元素的属性,而不带@表示的是子元素。

免责声明:文章转载自《WPF数据绑定(四)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTTP请求行、请求头、请求体详解C#-将控件动态添加到选项卡页tablepage下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

LINQ根据时间排序问题(OrderBy、OrderByDescending)

直接上代码: db.GetList<Draw2D>(x => x.ProductId == id && x.EditionNo == no) .OrderBy(x => x.CreateTime.Desc()) .ToList(); 这个无法排序!!! return db.GetList<Dra...

微服务中如何设计一个权限授权服务

基于角色的访问控制  (RBAC)    是将系统访问限制为授权用户的一种方法,是围绕角色和特权定义的与策略无关的访问控制机制,RBAC的组件使执行用户分配变得很简单。   在组织内部,将为各种职务创建角色。执行某些操作的权限已分配给特定角色。成员或职员(或其他系统用户)被分配了特定角色,并且通过这些角色分配获得执行特定系统功能所需的权限。由于未直接为用户...

maven pom 属性介绍

maven pom属性 内置属性(预定义,可直接使用) ${basedir} 表示项目根目录,即包含pom.xml文件的目录; ${version} 表示项目版本; ${project.basedir}同${basedir}; ${maven.build.timestamp} 表示项目构件开始时间; ${maven.build.timestamp.for...

DevExpress 控件汉化代码和使用方法

DevExpress 第三方控件汉化的全部代码和使用方法   DevExpress.XtraEditors.Controls  此控件包中包含的控件最多,包括文本框,下拉列表,按钮,等等       DevExpress.XtraGrid 网格       DevExpress.XtraBars 菜单栏 和 工具栏       DevExpress.Xtr...

从数据库里面取值绑定到Ztree

1、效果图(思路:将数据库表按照一定的格式排序,然后序列化成json字符串,绑定到Ztree上并显示出来) zTree v3.5.16 API 文档 :http://www.ztree.me/v3/api.php 2、添加应用及显示的位置,设置树需要绑定的字段,与数据库里面的表字段有关(备注:设置树为展开状态) <script src="/comm...

基于jQuery美化联动下拉选择框

今天给大家介绍一款基于jQuery美化联动下拉选择框。这款下下拉选择框js里自带了全国所有城市的数数库。下拉选择框适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗。效果图如下: 在线预览   源码下载 实现的代码。 html代码: <div id="container">...