WPF绑定各种数据源之xml数据源

简介:

一、WPF绑定各种数据源索引

WPF 绑定各种数据源之Datatable

WPF绑定各种数据源之object数据源

WPF绑定各种数据源之xml数据源

WPF绑定各种数据源之元素控件属性

Binding的基础可参考WPF 绑定基础

二、WPF绑定各种数据源之xml数据源,此时的XML源写在界面了,当然也可以独立成文件。

<Window.Resources>
        <Con:BackgroundConverter x:Key= "BackgroundConverter" />
        <XmlDataProvider x:Key= "myPerson3" >
            <x:XData>
                <PersonF xmlns= "" >
                    <person Name= "Person1" >
                        <ID>1</ID>
                        <Name>XiaoA</Name>
                        <Age>49</Age>
                    </person>
                    <person Name= "Person2" >
                        <ID>2</ID>
                        <Name>XiaoB</Name>
                        <Age>29</Age>
                    </person>
                    <person Name= "Person3" >
                        <ID>3</ID>
                        <Name>XiaoC</Name>
                        <Age>103</Age>
                    </person>
                    <person Name= "Person4" >
                        <ID>4</ID>
                        <Name>XiaoD</Name>
                        <Age>59</Age>
                    </person>
                </PersonF>
            </x:XData>
        </XmlDataProvider>
    </Window.Resources>

  下面是绑定的代码。此时需要注意,原来用Path改成了XPath,因为这是XML源,并且ItemsSource 改成 ItemsSource="{Binding Source={StaticResource myPerson3},XPath=/PersonF/person}"

<ListView Height= "262"  Margin= "0,32,56,0"  ItemsSource= "{Binding Source={StaticResource myPerson3},XPath=/PersonF/person}"  VerticalAlignment= "Top"   Name= "listView3"  HorizontalAlignment= "Right"  Width= "310" >
       <ListView.View>
           <GridView>
               <GridViewColumn Header= "编号"  DisplayMemberBinding= "{Binding XPath=ID}"   Width= "100"  />
               <GridViewColumn Header= "姓名"  DisplayMemberBinding= "{Binding XPath=Name}"  Width= "100" />
               <GridViewColumn Header= "年龄"  Width= "100" >
                   <GridViewColumn.CellTemplate>
                       <DataTemplate>
                           <TextBlock Grid.Column= "1"  Text= "{Binding XPath=Age}"  Foreground= "{Binding XPath=Age, Converter={StaticResource BackgroundConverter}}" />
                       </DataTemplate>
                   </GridViewColumn.CellTemplate>
               </GridViewColumn>
           </GridView>
       </ListView.View>
   </ListView>

  下面是值转换

public  class  BackgroundConverter : IValueConverter
    {
        #region IValueConverter Members
 
        public  object  Convert( object  value, Type targetType, object  parameter, System.Globalization.CultureInfo culture)
        {
            Color color = new  Color();
            int  num = int .Parse(value.ToString());
            if  (num > 100)
                color = Colors.Yellow;
            else  if  (num < 50)
                color = Colors.LightGreen;
            else
                color = Colors.LightPink;
            return  new  SolidColorBrush(color);
        }
 
        public  object  ConvertBack( object  value, Type targetType, object  parameter, System.Globalization.CultureInfo culture)
        {
            throw  new  NotImplementedException();
        }
 
        #endregion
    }

  效果图:

2.使用外部XML数据源,只需做如下修改

<Window.Resources>
        <XmlDataProvider x:Key= "myPerson3"  Source= "/Person.xml" />
   </Window.Resources>

3.如果使用外部XML数据源,并且采用C#代码的形式,则如下:

XmlDocument doc = new  XmlDocument();
  doc.Load( @"http://www.cnblogs.com/XMLFile1.xml" );
  XmlDataProvider provider = new  XmlDataProvider();
  provider.Document = doc;
  provider.XPath = @"/PersonF/person" ;
 
  listView3.DataContext = provider;
  listView3.SetBinding(ListView.ItemsSourceProperty, new  Binding());

 当然也可以使用XMLDataProvider的Source属性,此时只需做如下修改:

XmlDataProvider provider = new  XmlDataProvider();
provider.Source = new  Uri( @"F:\\XMLFile1.xml" );
provider.XPath = @"/PersonF/person" ;

其他不变。 

  


本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2011/09/06/2168597.html,如需转载请自行联系原作者

目录
相关文章
WPF—多重绑定和跨层级绑定
WPF—多重绑定和跨层级绑定
|
C# 数据格式 XML
WPF 资源(StaticResource 静态资源、DynamicResource 动态资源、添加二进制资源、绑定资源树)
原文:WPF 资源(StaticResource 静态资源、DynamicResource 动态资源、添加二进制资源、绑定资源树) 一、WPF对象级(Window对象)资源的定义与查找 实例一: StaticR...
8021 0
|
9月前
|
C# 数据库
WPF中DataGrid控件绑定数据源
WPF中DataGrid控件绑定数据源
113 0
|
11月前
|
XML Android开发 数据格式
Viewbinding自动生成XML的一个对应绑定类
设置完sync一下,然后会在项目中看到对应的XML文件的一个继承了ViewBinding的对应绑定类。 如果不想生成,则在XML文件中设置一个tools:viewBindingIgnore="true"属性,即可忽略不生成对应绑定类。
109 0
|
12月前
|
C#
WPF更新绑定字段
WPF更新绑定字段
69 0
|
前端开发 C#
WPF 之 数据与命令绑定 (MVVM方式)
WPF 之 数据与命令绑定 (MVVM方式)
158 0
WPF 之 数据与命令绑定 (MVVM方式)
|
XML 存储 JSON
多叉树结合JavaScript树形组件实现无限级树形结构(一种构建多级有序树形结构JSON(或XML)数据源的方法)
如何将数据库中的层次数据转换成对应的层次结构的JSON或XML格式的字符串,返回给客户端的JavaScript树形组件?这就是我们要解决的关键技术问题。
多叉树结合JavaScript树形组件实现无限级树形结构(一种构建多级有序树形结构JSON(或XML)数据源的方法)
|
C#
WPF 绑定父类属性
原文:WPF 绑定父类属性 1.绑定父控件的属性. 1 2 3 4 5 6 7 8 9 发现问题,父控件的属性如果是后期加载的,别如说Width或者Height不是固定的数值,那么绑定时没有效果的。
1229 0
|
XML JSON 数据格式
如何提取SAP UI5 XML view里定义的字段元素绑定信息(binding path)
如何提取SAP UI5 XML view里定义的字段元素绑定信息(binding path)
如何提取SAP UI5 XML view里定义的字段元素绑定信息(binding path)
|
XML JavaScript Go
word模板和XML数据源是如何合并生成最后的word文档的详细过程
word模板和XML数据源是如何合并生成最后的word文档的详细过程
202 0
word模板和XML数据源是如何合并生成最后的word文档的详细过程