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";

    其他不变。 

      

    作者:Work Hard Work Smart
    出处:http://www.cnblogs.com/linlf03/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    学习asp.net比较完整的流程
    [图像思考法]我用图像故事法来理解与记忆冒泡排序
    MVC4与JSON交互的知识总结
    vulhub漏洞环境库内容整理
    kaliapt update时报The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ED444FF07D8D0BF6解决方案
    sqlilabs靶机测试笔记
    Lord_Of_The_Root1.0.1靶机测试笔记
    utf16的单引号乱码,用于post型宽字节注入
    ubuntu16.04报错AttributeError: module 'platform' has no attribute 'linux_distribution'
    一文搞定OSCP的缓冲区溢出
  • 原文地址:https://www.cnblogs.com/nepulgh/p/7128857.html
Copyright © 2011-2022 走看看