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/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/nepulgh/p/7128857.html
Copyright © 2011-2022 走看看