zoukankan      html  css  js  c++  java
  • 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";
    

    其他不变。 

      

  • 相关阅读:
    存储过程参数不能使用函数
    .gitignore git已跟踪文件不生效
    Css选择器-层次选择器(关系选择器)
    Mysql自定义变量的作用
    jQuery 鼠标滑过Div变色
    DataTable导出excel 设置单元格格式
    layui table 详细讲解
    npm 常用命令详解
    SQL Server 2008下轻松调试T-SQL语句和存储过程
    帆软报表常用功能
  • 原文地址:https://www.cnblogs.com/linlf03/p/2168597.html
Copyright © 2011-2022 走看看